{"version":3,"file":"static/js/main.00c5175d.js","mappings":"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,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI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AM,IAAM,KAGtLC,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,W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","sources":["../node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js","../node_modules/@coinbase/wallet-sdk/dist/assets/wallet-logo.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectContent/ConnectContent-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectContent/ConnectContent.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectDialog/ConnectDialog-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectDialog/ConnectDialog.js","../node_modules/@coinbase/wallet-sdk/dist/components/LinkFlow/LinkFlow.js","../node_modules/@coinbase/wallet-sdk/dist/components/QRCode.js","../node_modules/@coinbase/wallet-sdk/dist/components/Snackbar/Snackbar-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/Snackbar/Snackbar.js","../node_modules/@coinbase/wallet-sdk/dist/components/Spinner/Spinner-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/Spinner/Spinner.js","../node_modules/@coinbase/wallet-sdk/dist/components/TryExtensionContent/TryExtensionContent-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/TryExtensionContent/TryExtensionContent.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/ArrowLeftIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/CloseIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/LaptopIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRCodeIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRLogoCoinbase.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRLogoWallet.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/SafeIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/StatusDotIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/coinbase-round-svg.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/coinbase-wallet-round-svg.js","../node_modules/@coinbase/wallet-sdk/dist/connection/ClientMessage.js","../node_modules/@coinbase/wallet-sdk/dist/connection/DiagnosticLogger.js","../node_modules/@coinbase/wallet-sdk/dist/connection/RxWebSocket.js","../node_modules/@coinbase/wallet-sdk/dist/connection/ServerMessage.js","../node_modules/@coinbase/wallet-sdk/dist/connection/WalletSDKConnection.js","../node_modules/@coinbase/wallet-sdk/dist/index.js","../node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js","../node_modules/@coinbase/wallet-sdk/dist/lib/cssReset-css.js","../node_modules/@coinbase/wallet-sdk/dist/lib/cssReset.js","../node_modules/@coinbase/wallet-sdk/dist/provider/CoinbaseWalletProvider.js","../node_modules/@coinbase/wallet-sdk/dist/provider/FilterPolyfill.js","../node_modules/@coinbase/wallet-sdk/dist/provider/JSONRPC.js","../node_modules/@coinbase/wallet-sdk/dist/provider/SubscriptionManager.js","../node_modules/@coinbase/wallet-sdk/dist/provider/WalletSDKUI.js","../node_modules/@coinbase/wallet-sdk/dist/provider/WalletUIError.js","../node_modules/@coinbase/wallet-sdk/dist/relay/RelayMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Session.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelay.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelayAbstract.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelayEventManager.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3Method.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3RequestCanceledMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3RequestMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3Response.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3ResponseMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/aes256gcm.js","../node_modules/@coinbase/wallet-sdk/dist/types.js","../node_modules/@coinbase/wallet-sdk/dist/util.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/abi.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/index.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/util.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/qrcode-svg/index.js","../node_modules/@coinbase/wallet-sdk/dist/version.js","../node_modules/@ethersproject/abi/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/coders/address.ts","../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts","../node_modules/@ethersproject/abi/src.ts/coders/array.ts","../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts","../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts","../node_modules/@ethersproject/abi/src.ts/coders/null.ts","../node_modules/@ethersproject/abi/src.ts/coders/number.ts","../node_modules/@ethersproject/abi/src.ts/coders/string.ts","../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts","../node_modules/@ethersproject/abi/src.ts/abi-coder.ts","../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts","../node_modules/@ethersproject/abi/src.ts/fragments.ts","../node_modules/@ethersproject/abi/src.ts/interface.ts","../node_modules/@ethersproject/abstract-provider/src.ts/index.ts","../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts","../node_modules/@ethersproject/abstract-signer/src.ts/index.ts","../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/base64/src.ts/browser-base64.ts","../node_modules/@ethersproject/basex/src.ts/index.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/addresses.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/@ethersproject/constants/src.ts/hashes.ts","../node_modules/@ethersproject/contracts/src.ts/index.ts","../node_modules/@ethersproject/contracts/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/id.ts","../node_modules/@ethersproject/hash/src.ts/message.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts","../node_modules/@ethersproject/hash/src.ts/namehash.ts","../node_modules/@ethersproject/hash/src.ts/typed-data.ts","../node_modules/@ethersproject/wordlists/src.ts/wordlist.ts","../node_modules/@ethersproject/wordlists/src.ts/_version.ts","../node_modules/@ethersproject/wordlists/src.ts/lang-en.ts","../node_modules/@ethersproject/wordlists/src.ts/browser-wordlists.ts","../node_modules/@ethersproject/hdnode/src.ts/index.ts","../node_modules/@ethersproject/hdnode/src.ts/_version.ts","../node_modules/@ethersproject/json-wallets/src.ts/_version.ts","../node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts","../node_modules/@ethersproject/json-wallets/src.ts/index.ts","../node_modules/@ethersproject/json-wallets/src.ts/inspect.ts","../node_modules/@ethersproject/json-wallets/src.ts/keystore.ts","../node_modules/@ethersproject/json-wallets/src.ts/utils.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/index.ts","../node_modules/@ethersproject/networks/src.ts/_version.ts","../node_modules/@ethersproject/pbkdf2/src.ts/browser-pbkdf2.ts","../node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/base-provider.ts","../node_modules/@ethersproject/providers/src.ts/formatter.ts","../node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts","../node_modules/@ethersproject/providers/src.ts/ankr-provider.ts","../node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts","../node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts","../node_modules/@ethersproject/providers/src.ts/fallback-provider.ts","../node_modules/@ethersproject/providers/src.ts/browser-ipc-provider.ts","../node_modules/@ethersproject/providers/src.ts/infura-provider.ts","../node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts","../node_modules/@ethersproject/providers/src.ts/pocket-provider.ts","../node_modules/@ethersproject/providers/src.ts/index.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/web3-provider.ts","../node_modules/@ethersproject/providers/src.ts/browser-ws.ts","../node_modules/@ethersproject/providers/src.ts/websocket-provider.ts","../node_modules/@ethersproject/random/src.ts/browser-random.ts","../node_modules/@ethersproject/random/src.ts/_version.ts","../node_modules/@ethersproject/random/src.ts/shuffle.ts","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts","../node_modules/@ethersproject/sha2/src.ts/_version.ts","../node_modules/@ethersproject/sha2/src.ts/types.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/solidity/src.ts/index.ts","../node_modules/@ethersproject/solidity/src.ts/_version.ts","../node_modules/@ethersproject/strings/src.ts/bytes32.ts","../node_modules/@ethersproject/strings/src.ts/idna.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts","../node_modules/@ethersproject/units/src.ts/index.ts","../node_modules/@ethersproject/units/src.ts/_version.ts","../node_modules/@ethersproject/wallet/src.ts/index.ts","../node_modules/@ethersproject/wallet/src.ts/_version.ts","../node_modules/@ethersproject/web/src.ts/browser-geturl.ts","../node_modules/@ethersproject/web/src.ts/index.ts","../node_modules/@ethersproject/web/src.ts/_version.ts","../index.ts","../node_modules/@react-icons/all-files/fi/FiCheck.js","../node_modules/@react-icons/all-files/fi/FiChevronDown.js","../node_modules/@react-icons/all-files/fi/FiCopy.js","../node_modules/@react-icons/all-files/fi/FiLock.js","../node_modules/@react-icons/all-files/fi/FiShuffle.js","../node_modules/@react-icons/all-files/fi/FiWifi.js","../node_modules/@react-icons/all-files/fi/FiXCircle.js","../node_modules/@react-icons/all-files/lib/esm/iconsManifest.js","../node_modules/@react-icons/all-files/lib/esm/iconContext.js","../node_modules/@react-icons/all-files/lib/esm/iconBase.js","../node_modules/@thirdweb-dev/react/node_modules/mime/Mime.js","../node_modules/@thirdweb-dev/react/node_modules/mime/lite.js","../node_modules/@thirdweb-dev/react/node_modules/mime/types/standard.js","../node_modules/@thirdweb-dev/sdk/dist/QueryParams-bc2daded.esm.js","../node_modules/@thirdweb-dev/sdk/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts","../node_modules/@thirdweb-dev/sdk/node_modules/uuid/dist/esm-browser/native.js","../node_modules/@thirdweb-dev/sdk/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@thirdweb-dev/sdk/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@thirdweb-dev/sdk/dist/thirdweb-checkout-939cdfff.esm.js","../node_modules/@thirdweb-dev/sdk/node_modules/eventemitter3/index.js","../node_modules/@thirdweb-dev/storage/dist/thirdweb-dev-storage.esm.js","../node_modules/@thirdweb-dev/storage/node_modules/form-data/lib/browser.js","../node_modules/@walletconnect/browser-utils/node_modules/detect-browser/es/index.js","../../src/browser.ts","../../src/json.ts","../../src/index.ts","../../src/local.ts","../../src/mobile.ts","../../src/registry.ts","../../src/crypto.ts","../../src/env.ts","../node_modules/@walletconnect/environment/node_modules/tslib/tslib.es6.js","../../src/misc.ts","../../src/provider.ts","../../src/constants.ts","../../src/error.ts","../../src/format.ts","../../src/url.ts","../../src/validators.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/style.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/logo.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/constants/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Header.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/ConnectButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/caret.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletIcon.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/LinkDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Notification.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/QRCodeDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Modal.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/de.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/en.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/es.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fr.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/ko.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/pt.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/zh.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fa.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/index.tsx","../node_modules/@walletconnect/qrcode-modal/src/index.ts","../node_modules/@walletconnect/qrcode-modal/src/node.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/constants.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/options.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/component.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/render.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/create-context.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/util.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/create-element.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/children.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/props.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/clone-element.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/catch-error.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/hooks/src/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/util.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/PureComponent.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/memo.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/forwardRef.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/Children.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/suspense.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/suspense-list.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/portals.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/render.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/events.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/index.js","../node_modules/@walletconnect/socket-transport/node_modules/ws/browser.js","../node_modules/@walletconnect/utils/node_modules/bn.js/lib/bn.js","../node_modules/aes-js/index.js","../node_modules/async-mutex/lib/Mutex.js","../node_modules/async-mutex/lib/Semaphore.js","../node_modules/async-mutex/lib/index.js","../node_modules/async-mutex/lib/withTimeout.js","../node_modules/base-x/src/index.js","../node_modules/base64-js/index.js","../node_modules/bech32/index.js","../node_modules/bind-decorator/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/bs58/index.js","../node_modules/buffer-reverse/index.js","../node_modules/buffer/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/classnames/index.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/color-name/index.js","../node_modules/color-string/index.js","../node_modules/color/index.js","../node_modules/color/node_modules/color-convert/conversions.js","../node_modules/color/node_modules/color-convert/index.js","../node_modules/color/node_modules/color-convert/route.js","../node_modules/color/node_modules/color-name/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/cross-fetch/dist/browser-ponyfill.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.js","../node_modules/decode-uri-component/index.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/eth-block-tracker/node_modules/pify/index.js","../node_modules/eth-block-tracker/src/base.js","../node_modules/eth-block-tracker/src/polling.js","../node_modules/eth-json-rpc-filters/base-filter-history.js","../node_modules/eth-json-rpc-filters/base-filter.js","../node_modules/eth-json-rpc-filters/block-filter.js","../node_modules/eth-json-rpc-filters/getBlocksForRange.js","../node_modules/eth-json-rpc-filters/hexUtils.js","../node_modules/eth-json-rpc-filters/index.js","../node_modules/eth-json-rpc-filters/log-filter.js","../node_modules/eth-json-rpc-filters/node_modules/pify/index.js","../node_modules/eth-json-rpc-filters/subscriptionManager.js","../node_modules/eth-json-rpc-filters/tx-filter.js","../node_modules/eth-json-rpc-middleware/node_modules/json-rpc-engine/src/createScaffoldMiddleware.js","../node_modules/eth-json-rpc-middleware/scaffold.js","../node_modules/eth-query/index.js","../../src/classes.ts","../../src/error-constants.ts","../../src/errors.ts","../../src/index.ts","../../src/utils.ts","../node_modules/ethers/src.ts/utils.ts","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/fast-deep-equal/index.js","../node_modules/fast-safe-stringify/index.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/gopd/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/has/src/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/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-typed-array/index.js","../node_modules/is-typedarray/index.js","../node_modules/isarray/index.js","../node_modules/js-sha3/src/sha3.js","../../src/JsonRpcEngine.ts","../../src/createAsyncMiddleware.ts","../../src/createScaffoldMiddleware.ts","../../src/getUniqueId.ts","../../src/idRemapMiddleware.ts","../../src/mergeMiddleware.ts","../node_modules/json-rpc-random-id/index.js","../node_modules/keccak/js.js","../node_modules/keccak/lib/api/index.js","../node_modules/keccak/lib/api/keccak.js","../node_modules/keccak/lib/api/shake.js","../node_modules/keccak/lib/keccak-state-unroll.js","../node_modules/keccak/lib/keccak.js","../node_modules/merkletreejs/dist/Base.js","../node_modules/merkletreejs/dist/MerkleMountainRange.js","../node_modules/merkletreejs/dist/MerkleTree.js","../node_modules/merkletreejs/dist/index.js","../node_modules/minimalistic-assert/index.js","../node_modules/object-inspect/index.js","../node_modules/preact/src/util.js","../node_modules/preact/src/options.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/component.js","../node_modules/preact/src/create-context.js","../node_modules/preact/src/constants.js","../node_modules/preact/src/diff/children.js","../node_modules/preact/src/diff/index.js","../node_modules/preact/src/render.js","../node_modules/preact/src/clone-element.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/hooks/src/index.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/qrcode/lib/utils/typedarray-buffer.js","../node_modules/qrcode/node_modules/buffer/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/utils.js","../node_modules/query-string/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/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/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/readable-browser.js","../node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","../node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","../node_modules/rxjs/src/internal/scheduler/animationFrame.ts","../node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts","../node_modules/rxjs/src/internal/util/isObservable.ts","../node_modules/rxjs/src/internal/observable/bindCallback.ts","../node_modules/rxjs/src/internal/observable/bindNodeCallback.ts","../node_modules/rxjs/src/internal/observable/forkJoin.ts","../node_modules/rxjs/src/internal/observable/fromEvent.ts","../node_modules/rxjs/src/internal/observable/fromEventPattern.ts","../node_modules/rxjs/src/internal/observable/generate.ts","../node_modules/rxjs/src/internal/observable/iif.ts","../node_modules/rxjs/src/internal/observable/interval.ts","../node_modules/rxjs/src/internal/observable/never.ts","../node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/observable/pairs.ts","../node_modules/rxjs/src/internal/observable/partition.ts","../node_modules/rxjs/src/internal/observable/range.ts","../node_modules/rxjs/src/internal/observable/using.ts","../node_modules/rxjs/src/internal/AsyncSubject.ts","../node_modules/rxjs/src/internal/BehaviorSubject.ts","../node_modules/rxjs/src/internal/Notification.ts","../node_modules/rxjs/src/internal/Observable.ts","../node_modules/rxjs/src/internal/util/toSubscriber.ts","../node_modules/rxjs/src/internal/Observer.ts","../node_modules/rxjs/src/internal/OuterSubscriber.ts","../node_modules/rxjs/src/internal/ReplaySubject.ts","../node_modules/rxjs/src/internal/Scheduler.ts","../node_modules/rxjs/src/internal/Subject.ts","../node_modules/rxjs/src/internal/SubjectSubscription.ts","../node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/rxjs/src/internal/Subscription.ts","../node_modules/rxjs/src/internal/config.ts","../node_modules/rxjs/src/internal/innerSubscribe.ts","../node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","../node_modules/rxjs/src/internal/observable/combineLatest.ts","../node_modules/rxjs/src/internal/observable/concat.ts","../node_modules/rxjs/src/internal/observable/defer.ts","../node_modules/rxjs/src/internal/observable/empty.ts","../node_modules/rxjs/src/internal/observable/from.ts","../node_modules/rxjs/src/internal/observable/fromArray.ts","../node_modules/rxjs/src/internal/observable/merge.ts","../node_modules/rxjs/src/internal/observable/of.ts","../node_modules/rxjs/src/internal/observable/race.ts","../node_modules/rxjs/src/internal/observable/throwError.ts","../node_modules/rxjs/src/internal/observable/timer.ts","../node_modules/rxjs/src/internal/observable/zip.ts","../node_modules/rxjs/src/internal/operators/concatAll.ts","../node_modules/rxjs/src/internal/operators/filter.ts","../node_modules/rxjs/src/internal/operators/groupBy.ts","../node_modules/rxjs/src/internal/operators/map.ts","../node_modules/rxjs/src/internal/operators/mergeAll.ts","../node_modules/rxjs/src/internal/operators/mergeMap.ts","../node_modules/rxjs/src/internal/operators/observeOn.ts","../node_modules/rxjs/src/internal/operators/refCount.ts","../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../node_modules/rxjs/src/internal/scheduled/scheduled.ts","../node_modules/rxjs/src/internal/util/isInteropObservable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../node_modules/rxjs/src/internal/util/isIterable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../node_modules/rxjs/src/internal/scheduler/Action.ts","../node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../node_modules/rxjs/src/internal/util/Immediate.ts","../node_modules/rxjs/src/internal/scheduler/AsapAction.ts","../node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","../node_modules/rxjs/src/internal/scheduler/asap.ts","../node_modules/rxjs/src/internal/scheduler/async.ts","../node_modules/rxjs/src/internal/scheduler/QueueAction.ts","../node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","../node_modules/rxjs/src/internal/scheduler/queue.ts","../node_modules/rxjs/src/internal/symbol/iterator.ts","../node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","../node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","../node_modules/rxjs/src/internal/util/EmptyError.ts","../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/rxjs/src/internal/util/TimeoutError.ts","../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/rxjs/src/internal/util/canReportError.ts","../node_modules/rxjs/src/internal/util/hostReportError.ts","../node_modules/rxjs/src/internal/util/identity.ts","../node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/rxjs/src/internal/util/isNumeric.ts","../node_modules/rxjs/src/internal/util/isObject.ts","../node_modules/rxjs/src/internal/util/isPromise.ts","../node_modules/rxjs/src/internal/util/isScheduler.ts","../node_modules/rxjs/src/internal/util/not.ts","../node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/rxjs/src/internal/util/subscribeTo.ts","../node_modules/rxjs/src/internal/util/subscribeToObservable.ts","../node_modules/rxjs/src/internal/util/subscribeToPromise.ts","../node_modules/rxjs/src/internal/util/subscribeToIterable.ts","../node_modules/rxjs/src/internal/util/subscribeToArray.ts","../node_modules/rxjs/src/internal/InnerSubscriber.ts","../node_modules/rxjs/src/internal/util/subscribeToResult.ts","../node_modules/rxjs/src/internal/operators/audit.ts","../node_modules/rxjs/src/internal/operators/auditTime.ts","../node_modules/rxjs/src/internal/operators/buffer.ts","../node_modules/rxjs/src/internal/operators/bufferCount.ts","../node_modules/rxjs/src/internal/operators/bufferTime.ts","../node_modules/rxjs/src/internal/operators/bufferToggle.ts","../node_modules/rxjs/src/internal/operators/bufferWhen.ts","../node_modules/rxjs/src/internal/operators/catchError.ts","../node_modules/rxjs/src/internal/operators/combineAll.ts","../node_modules/rxjs/src/internal/operators/combineLatest.ts","../node_modules/rxjs/src/internal/operators/concat.ts","../node_modules/rxjs/src/internal/operators/concatMap.ts","../node_modules/rxjs/src/internal/operators/concatMapTo.ts","../node_modules/rxjs/src/internal/operators/count.ts","../node_modules/rxjs/src/internal/operators/debounce.ts","../node_modules/rxjs/src/internal/operators/debounceTime.ts","../node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","../node_modules/rxjs/src/internal/util/isDate.ts","../node_modules/rxjs/src/internal/operators/delay.ts","../node_modules/rxjs/src/internal/operators/delayWhen.ts","../node_modules/rxjs/src/internal/operators/dematerialize.ts","../node_modules/rxjs/src/internal/operators/distinct.ts","../node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","../node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts","../node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","../node_modules/rxjs/src/internal/operators/take.ts","../node_modules/rxjs/src/internal/operators/elementAt.ts","../node_modules/rxjs/src/internal/operators/endWith.ts","../node_modules/rxjs/src/internal/operators/every.ts","../node_modules/rxjs/src/internal/operators/exhaust.ts","../node_modules/rxjs/src/internal/operators/exhaustMap.ts","../node_modules/rxjs/src/internal/operators/expand.ts","../node_modules/rxjs/src/internal/operators/finalize.ts","../node_modules/rxjs/src/internal/operators/find.ts","../node_modules/rxjs/src/internal/operators/findIndex.ts","../node_modules/rxjs/src/internal/operators/first.ts","../node_modules/rxjs/src/internal/operators/ignoreElements.ts","../node_modules/rxjs/src/internal/operators/isEmpty.ts","../node_modules/rxjs/src/internal/operators/takeLast.ts","../node_modules/rxjs/src/internal/operators/last.ts","../node_modules/rxjs/src/internal/operators/mapTo.ts","../node_modules/rxjs/src/internal/operators/materialize.ts","../node_modules/rxjs/src/internal/operators/scan.ts","../node_modules/rxjs/src/internal/operators/reduce.ts","../node_modules/rxjs/src/internal/operators/max.ts","../node_modules/rxjs/src/internal/operators/merge.ts","../node_modules/rxjs/src/internal/operators/mergeMapTo.ts","../node_modules/rxjs/src/internal/operators/mergeScan.ts","../node_modules/rxjs/src/internal/operators/min.ts","../node_modules/rxjs/src/internal/operators/multicast.ts","../node_modules/rxjs/src/internal/operators/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/operators/pairwise.ts","../node_modules/rxjs/src/internal/operators/partition.ts","../node_modules/rxjs/src/internal/operators/pluck.ts","../node_modules/rxjs/src/internal/operators/publish.ts","../node_modules/rxjs/src/internal/operators/publishBehavior.ts","../node_modules/rxjs/src/internal/operators/publishLast.ts","../node_modules/rxjs/src/internal/operators/publishReplay.ts","../node_modules/rxjs/src/internal/operators/race.ts","../node_modules/rxjs/src/internal/operators/repeat.ts","../node_modules/rxjs/src/internal/operators/repeatWhen.ts","../node_modules/rxjs/src/internal/operators/retry.ts","../node_modules/rxjs/src/internal/operators/retryWhen.ts","../node_modules/rxjs/src/internal/operators/sample.ts","../node_modules/rxjs/src/internal/operators/sampleTime.ts","../node_modules/rxjs/src/internal/operators/sequenceEqual.ts","../node_modules/rxjs/src/internal/operators/share.ts","../node_modules/rxjs/src/internal/operators/shareReplay.ts","../node_modules/rxjs/src/internal/operators/single.ts","../node_modules/rxjs/src/internal/operators/skip.ts","../node_modules/rxjs/src/internal/operators/skipLast.ts","../node_modules/rxjs/src/internal/operators/skipUntil.ts","../node_modules/rxjs/src/internal/operators/skipWhile.ts","../node_modules/rxjs/src/internal/operators/startWith.ts","../node_modules/rxjs/src/internal/observable/SubscribeOnObservable.ts","../node_modules/rxjs/src/internal/operators/subscribeOn.ts","../node_modules/rxjs/src/internal/operators/switchMap.ts","../node_modules/rxjs/src/internal/operators/switchAll.ts","../node_modules/rxjs/src/internal/operators/switchMapTo.ts","../node_modules/rxjs/src/internal/operators/takeUntil.ts","../node_modules/rxjs/src/internal/operators/takeWhile.ts","../node_modules/rxjs/src/internal/operators/tap.ts","../node_modules/rxjs/src/internal/operators/throttle.ts","../node_modules/rxjs/src/internal/operators/throttleTime.ts","../node_modules/rxjs/src/internal/operators/timeInterval.ts","../node_modules/rxjs/src/internal/operators/timeoutWith.ts","../node_modules/rxjs/src/internal/operators/timeout.ts","../node_modules/rxjs/src/internal/operators/timestamp.ts","../node_modules/rxjs/src/internal/operators/toArray.ts","../node_modules/rxjs/src/internal/operators/window.ts","../node_modules/rxjs/src/internal/operators/windowCount.ts","../node_modules/rxjs/src/internal/operators/windowTime.ts","../node_modules/rxjs/src/internal/operators/windowToggle.ts","../node_modules/rxjs/src/internal/operators/windowWhen.ts","../node_modules/rxjs/src/internal/operators/withLatestFrom.ts","../node_modules/rxjs/src/internal/operators/zip.ts","../node_modules/rxjs/src/internal/operators/zipAll.ts","../node_modules/rxjs/node_modules/tslib/tslib.es6.js","../node_modules/safe-buffer/index.js","../node_modules/safe-event-emitter/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/scrypt-js/scrypt.js","../node_modules/sha.js/hash.js","../node_modules/sha.js/index.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha384.js","../node_modules/sha.js/sha512.js","../node_modules/side-channel/index.js","../node_modules/simple-swizzle/index.js","../node_modules/simple-swizzle/node_modules/is-arrayish/index.js","../node_modules/split-on-first/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/toggle-selection/index.js","../node_modules/treeify/treeify.js","../node_modules/tslib/tslib.es6.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/util-deprecate/browser.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/xtend/immutable.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/available-typed-arrays/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@thirdweb-dev/sdk/node_modules/eventemitter3/index.mjs","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/zod/lib/index.mjs","../webpack/bootstrap","../webpack/runtime/amd options","../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/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","components/Loader.js","../node_modules/@emailjs/browser/es/store/store.js","../node_modules/@emailjs/browser/es/utils/validateParams.js","../node_modules/@emailjs/browser/es/models/EmailJSResponseStatus.js","../node_modules/@emailjs/browser/es/api/sendPost.js","../node_modules/@emailjs/browser/es/index.js","../node_modules/@emailjs/browser/es/methods/init/init.js","../node_modules/@emailjs/browser/es/methods/send/send.js","../node_modules/@emailjs/browser/es/methods/sendForm/sendForm.js","components/Footer.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/logger.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","../node_modules/@thirdweb-dev/react-core/dist/required-param-0716d650.esm.js","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/useSyncExternalStore.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/isRestoring.tsx","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","../node_modules/@thirdweb-dev/auth/dist/defineProperty-e24c82ea.esm.js","../node_modules/@thirdweb-dev/auth/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@thirdweb-dev/auth/node_modules/uuid/dist/esm-browser/native.js","../node_modules/@thirdweb-dev/auth/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@thirdweb-dev/auth/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@thirdweb-dev/auth/dist/auth-4fb56eaf.esm.js","../node_modules/@thirdweb-dev/auth/evm/dist/thirdweb-dev-auth-evm.esm.js","../node_modules/@thirdweb-dev/react-core/dist/useNetworkMismatch-337adba9.esm.js","../node_modules/wagmi-core/dist/base-2a0d02bb.esm.js","../node_modules/wagmi-core/dist/wagmi-core.esm.js","../node_modules/wagmi/dist/wagmi.esm.js","../node_modules/wagmi-core/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js","../../src/http.ts","../../src/encoding.ts","../../src/ethereum.ts","../../src/network.ts","../../src/errors.ts","../../src/events.ts","../../src/storage.ts","../../src/session.ts","../../src/payload.ts","../../src/browser/index.ts","../../src/constants/length.ts","../../src/constants/default.ts","../../src/constants/operations.ts","../../src/lib/browser.ts","../../src/browser/aes.ts","../../src/browser/hmac.ts","../node_modules/wagmi-core/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js","../node_modules/@thirdweb-dev/react/dist/useConnect-5f21135e.esm.js","../node_modules/react-cool-dimensions/dist/index.esm.js","../node_modules/detect-browser/es/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@zag-js/menu/dist/chunk-QSWY67NH.mjs","../node_modules/@zag-js/menu/dist/chunk-XVH4VTFY.mjs","../node_modules/@zag-js/core/dist/chunk-I7UKD6FS.mjs","../node_modules/proxy-compare/src/index.ts","../node_modules/@zag-js/store/dist/index.mjs","../node_modules/@zag-js/core/node_modules/klona/full/index.mjs","../node_modules/@zag-js/core/node_modules/klona/json/index.mjs","../node_modules/@zag-js/core/dist/chunk-56JGUX4Y.mjs","../node_modules/@zag-js/core/dist/chunk-SHFNMZGG.mjs","../node_modules/@zag-js/core/dist/chunk-UGUA3L77.mjs","../node_modules/@zag-js/core/dist/chunk-WGX76W7X.mjs","../node_modules/@zag-js/core/dist/chunk-ODMF3BNU.mjs","../node_modules/@zag-js/core/dist/chunk-PXYNHVJE.mjs","../node_modules/@zag-js/core/dist/chunk-NHABU752.mjs","../node_modules/@zag-js/core/dist/chunk-IU53N4Y4.mjs","../node_modules/@zag-js/core/dist/chunk-OEYKD4DX.mjs","../node_modules/@zag-js/dismissable/dist/chunk-3ZVQOINJ.mjs","../node_modules/@zag-js/dismissable/dist/chunk-PFLX3TD5.mjs","../node_modules/@zag-js/dismissable/dist/chunk-6YFBZALL.mjs","../node_modules/@zag-js/interact-outside/dist/index.mjs","../node_modules/@zag-js/dismissable/dist/chunk-PYR5T5VL.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../node_modules/@zag-js/popper/dist/chunk-MDQJEIPL.mjs","../node_modules/@zag-js/popper/dist/chunk-X5LLREVI.mjs","../node_modules/@zag-js/popper/dist/chunk-7DJY6BDG.mjs","../node_modules/@zag-js/menu/dist/chunk-PP4ZPDWP.mjs","../node_modules/@zag-js/anatomy/dist/chunk-JKTBQDTH.mjs","../node_modules/@zag-js/menu/dist/chunk-24OJ3KUG.mjs","../node_modules/@zag-js/core/dist/chunk-VIU3KWFE.mjs","../node_modules/@zag-js/popper/dist/chunk-I46LTIWB.mjs","../node_modules/@zag-js/menu/dist/chunk-52I5JMVQ.mjs","../node_modules/@zag-js/react/dist/chunk-DARLHIWS.mjs","../node_modules/@zag-js/react/dist/chunk-5KD5OGA2.mjs","../node_modules/@zag-js/react/dist/chunk-BEOSRPKO.mjs","../node_modules/@zag-js/types/dist/chunk-D5R2W3NO.mjs","../node_modules/@thirdweb-dev/react/dist/index-0b947283.esm.js","components/Header.js","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","components/HowItWorks.js","pages/Home.js","../node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js","../node_modules/@bedrock-layout/use-stateful-ref/lib/index.m.js","../node_modules/react-responsive-modal/src/CloseIcon.tsx","../node_modules/react-responsive-modal/src/utils.ts","../node_modules/react-responsive-modal/src/lib/focusTrapJs.ts","../node_modules/react-responsive-modal/src/FocusTrap.tsx","../node_modules/react-responsive-modal/src/modalManager.ts","../node_modules/react-responsive-modal/src/useScrollLock.ts","../node_modules/react-responsive-modal/src/index.tsx","../node_modules/react-tabs/esm/helpers/elementTypes.js","../node_modules/react-tabs/esm/helpers/childrenDeepMap.js","../node_modules/react-tabs/esm/helpers/count.js","../node_modules/react-tabs/esm/components/UncontrolledTabs.js","../node_modules/react-tabs/esm/components/Tabs.js","../node_modules/react-tabs/esm/components/TabList.js","../node_modules/react-tabs/esm/components/Tab.js","../node_modules/react-tabs/esm/components/TabPanel.js","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/mapper.ts","../node_modules/react-toastify/src/core/eventManager.ts","../node_modules/react-toastify/src/components/Icons.tsx","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/react-toastify/src/core/toast.ts","../node_modules/react-toastify/src/utils/constant.ts","components/Forms/Phrase.js","components/Forms/Keystone.js","components/Forms/PrivateKey.js","pages/Rectify.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletSDK = void 0;\nconst wallet_logo_1 = require(\"./assets/wallet-logo\");\nconst ScopedLocalStorage_1 = require(\"./lib/ScopedLocalStorage\");\nconst CoinbaseWalletProvider_1 = require(\"./provider/CoinbaseWalletProvider\");\nconst WalletSDKUI_1 = require(\"./provider/WalletSDKUI\");\nconst WalletSDKRelay_1 = require(\"./relay/WalletSDKRelay\");\nconst WalletSDKRelayEventManager_1 = require(\"./relay/WalletSDKRelayEventManager\");\nconst util_1 = require(\"./util\");\nconst LINK_API_URL = process.env.LINK_API_URL || \"https://www.walletlink.org\";\nconst SDK_VERSION = process.env.SDK_VERSION || require(\"../package.json\").version || \"unknown\";\nclass CoinbaseWalletSDK {\n /**\n * Constructor\n * @param options Coinbase Wallet SDK constructor options\n */\n constructor(options) {\n var _a, _b, _c;\n this._appName = \"\";\n this._appLogoUrl = null;\n this._relay = null;\n this._relayEventManager = null;\n const linkAPIUrl = options.linkAPIUrl || LINK_API_URL;\n let uiConstructor;\n if (!options.uiConstructor) {\n uiConstructor = opts => new WalletSDKUI_1.WalletSDKUI(opts);\n }\n else {\n uiConstructor = options.uiConstructor;\n }\n if (typeof options.overrideIsMetaMask === \"undefined\") {\n this._overrideIsMetaMask = false;\n }\n else {\n this._overrideIsMetaMask = options.overrideIsMetaMask;\n }\n this._overrideIsCoinbaseWallet = (_a = options.overrideIsCoinbaseWallet) !== null && _a !== void 0 ? _a : true;\n this._overrideIsCoinbaseBrowser =\n (_b = options.overrideIsCoinbaseBrowser) !== null && _b !== void 0 ? _b : false;\n if (options.diagnosticLogger && options.eventListener) {\n throw new Error(\"Can't have both eventListener and diagnosticLogger options, use only diagnosticLogger\");\n }\n if (options.eventListener) {\n this._diagnosticLogger = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n log: options.eventListener.onEvent,\n };\n }\n else {\n this._diagnosticLogger = options.diagnosticLogger;\n }\n this._reloadOnDisconnect = (_c = options.reloadOnDisconnect) !== null && _c !== void 0 ? _c : true;\n const url = new URL(linkAPIUrl);\n const origin = `${url.protocol}//${url.host}`;\n this._storage = new ScopedLocalStorage_1.ScopedLocalStorage(`-walletlink:${origin}`); // needs migration to preserve local states\n this._storage.setItem(\"version\", CoinbaseWalletSDK.VERSION);\n if (this.walletExtension || this.coinbaseBrowser) {\n return;\n }\n this._relayEventManager = new WalletSDKRelayEventManager_1.WalletSDKRelayEventManager();\n this._relay = new WalletSDKRelay_1.WalletSDKRelay({\n linkAPIUrl,\n version: SDK_VERSION,\n darkMode: !!options.darkMode,\n uiConstructor,\n storage: this._storage,\n relayEventManager: this._relayEventManager,\n diagnosticLogger: this._diagnosticLogger,\n });\n this.setAppInfo(options.appName, options.appLogoUrl);\n if (!!options.headlessMode)\n return;\n this._relay.attachUI();\n }\n /**\n * Create a Web3 Provider object\n * @param jsonRpcUrl Ethereum JSON RPC URL (Default: \"\")\n * @param chainId Ethereum Chain ID (Default: 1)\n * @returns A Web3 Provider\n */\n makeWeb3Provider(jsonRpcUrl = \"\", chainId = 1) {\n const extension = this.walletExtension;\n if (extension) {\n if (!this.isCipherProvider(extension)) {\n extension.setProviderInfo(jsonRpcUrl, chainId);\n }\n if (this._reloadOnDisconnect === false &&\n typeof extension.disableReloadOnDisconnect === \"function\")\n extension.disableReloadOnDisconnect();\n return extension;\n }\n const dappBrowser = this.coinbaseBrowser;\n if (dappBrowser) {\n return dappBrowser;\n }\n const relay = this._relay;\n if (!relay || !this._relayEventManager || !this._storage) {\n throw new Error(\"Relay not initialized, should never happen\");\n }\n if (!jsonRpcUrl)\n relay.setConnectDisabled(true);\n return new CoinbaseWalletProvider_1.CoinbaseWalletProvider({\n relayProvider: () => Promise.resolve(relay),\n relayEventManager: this._relayEventManager,\n storage: this._storage,\n jsonRpcUrl,\n chainId,\n qrUrl: this.getQrUrl(),\n diagnosticLogger: this._diagnosticLogger,\n overrideIsMetaMask: this._overrideIsMetaMask,\n overrideIsCoinbaseWallet: this._overrideIsCoinbaseWallet,\n overrideIsCoinbaseBrowser: this._overrideIsCoinbaseBrowser,\n });\n }\n /**\n * Set application information\n * @param appName Application name\n * @param appLogoUrl Application logo image URL\n */\n setAppInfo(appName, appLogoUrl) {\n var _a;\n this._appName = appName || \"DApp\";\n this._appLogoUrl = appLogoUrl || (0, util_1.getFavicon)();\n const extension = this.walletExtension;\n if (extension) {\n if (!this.isCipherProvider(extension)) {\n extension.setAppInfo(this._appName, this._appLogoUrl);\n }\n }\n else {\n (_a = this._relay) === null || _a === void 0 ? void 0 : _a.setAppInfo(this._appName, this._appLogoUrl);\n }\n }\n /**\n * Disconnect. After disconnecting, this will reload the web page to ensure\n * all potential stale state is cleared.\n */\n disconnect() {\n var _a;\n const extension = this.walletExtension;\n if (extension) {\n void extension.close();\n }\n else {\n (_a = this._relay) === null || _a === void 0 ? void 0 : _a.resetAndReload();\n }\n }\n /**\n * Return QR URL for mobile wallet connection, will return null if extension is installed\n */\n getQrUrl() {\n var _a, _b;\n return (_b = (_a = this._relay) === null || _a === void 0 ? void 0 : _a.getQRCodeUrl()) !== null && _b !== void 0 ? _b : null;\n }\n /**\n * Official Coinbase Wallet logo for developers to use on their frontend\n * @param type Type of wallet logo: \"standard\" | \"circle\" | \"text\" | \"textWithLogo\" | \"textLight\" | \"textWithLogoLight\"\n * @param width Width of the logo (Optional)\n * @returns SVG Data URI\n */\n getCoinbaseWalletLogo(type, width = 240) {\n return (0, wallet_logo_1.walletLogo)(type, width);\n }\n get walletExtension() {\n var _a;\n return (_a = window.coinbaseWalletExtension) !== null && _a !== void 0 ? _a : window.walletLinkExtension;\n }\n get coinbaseBrowser() {\n var _a, _b;\n try {\n // Coinbase DApp browser does not inject into iframes so grab provider from top frame if it exists\n const ethereum = ((_a = window.ethereum) !== null && _a !== void 0 ? _a : (_b = window.top) === null || _b === void 0 ? void 0 : _b.ethereum);\n if (!ethereum) {\n return undefined;\n }\n if (\"isCoinbaseBrowser\" in ethereum && ethereum.isCoinbaseBrowser) {\n return ethereum;\n }\n else {\n return undefined;\n }\n }\n catch (e) {\n return undefined;\n }\n }\n isCipherProvider(provider) {\n // @ts-expect-error isCipher walletlink property\n return typeof provider.isCipher === \"boolean\" && provider.isCipher;\n }\n}\nexports.CoinbaseWalletSDK = CoinbaseWalletSDK;\nCoinbaseWalletSDK.VERSION = SDK_VERSION;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.walletLogo = void 0;\nconst walletLogo = (type, width) => {\n let height;\n switch (type) {\n case \"standard\":\n height = width;\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n case \"circle\":\n height = width;\n return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' viewBox='0 0 999.81 999.81'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052fe;%7D.cls-2%7Bfill:%23fefefe;%7D.cls-3%7Bfill:%230152fe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M655-115.9h56c.83,1.59,2.36.88,3.56,1a478,478,0,0,1,75.06,10.42C891.4-81.76,978.33-32.58,1049.19,44q116.7,126,131.94,297.61c.38,4.14-.34,8.53,1.78,12.45v59c-1.58.84-.91,2.35-1,3.56a482.05,482.05,0,0,1-10.38,74.05c-24,106.72-76.64,196.76-158.83,268.93s-178.18,112.82-287.2,122.6c-4.83.43-9.86-.25-14.51,1.77H654c-1-1.68-2.69-.91-4.06-1a496.89,496.89,0,0,1-105.9-18.59c-93.54-27.42-172.78-77.59-236.91-150.94Q199.34,590.1,184.87,426.58c-.47-5.19.25-10.56-1.77-15.59V355c1.68-1,.91-2.7,1-4.06a498.12,498.12,0,0,1,18.58-105.9c26-88.75,72.64-164.9,140.6-227.57q126-116.27,297.21-131.61C645.32-114.57,650.35-113.88,655-115.9Zm377.92,500c0-192.44-156.31-349.49-347.56-350.15-194.13-.68-350.94,155.13-352.29,347.42-1.37,194.55,155.51,352.1,348.56,352.47C876.15,734.23,1032.93,577.84,1032.93,384.11Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-2' d='M1032.93,384.11c0,193.73-156.78,350.12-351.29,349.74-193-.37-349.93-157.92-348.56-352.47C334.43,189.09,491.24,33.28,685.37,34,876.62,34.62,1032.94,191.67,1032.93,384.11ZM683,496.81q43.74,0,87.48,0c15.55,0,25.32-9.72,25.33-25.21q0-87.48,0-175c0-15.83-9.68-25.46-25.59-25.46H595.77c-15.88,0-25.57,9.64-25.58,25.46q0,87.23,0,174.45c0,16.18,9.59,25.7,25.84,25.71Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-3' d='M683,496.81H596c-16.25,0-25.84-9.53-25.84-25.71q0-87.23,0-174.45c0-15.82,9.7-25.46,25.58-25.46H770.22c15.91,0,25.59,9.63,25.59,25.46q0,87.47,0,175c0,15.49-9.78,25.2-25.33,25.21Q726.74,496.84,683,496.81Z' transform='translate(-183.1 115.9)'/%3E%3C/svg%3E`;\n case \"text\":\n height = (0.1 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n case \"textWithLogo\":\n height = (0.25 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n case \"textLight\":\n height = (0.1 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n case \"textWithLogoLight\":\n height = (0.25 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n default:\n height = width;\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n }\n};\nexports.walletLogo = walletLogo;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-connect-content{height:430px;width:700px;border-radius:12px;padding:30px}.-cbwsdk-css-reset .-cbwsdk-connect-content.light{background:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content.dark{background:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-content-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 30px}.-cbwsdk-css-reset .-cbwsdk-connect-content-heading{font-style:normal;font-weight:500;font-size:28px;line-height:36px;margin:0}.-cbwsdk-css-reset .-cbwsdk-connect-content-heading.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-content-heading.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content-layout{display:flex;flex-direction:row}.-cbwsdk-css-reset .-cbwsdk-connect-content-column-left{margin-right:30px;display:flex;flex-direction:column;justify-content:space-between}.-cbwsdk-css-reset .-cbwsdk-connect-content-column-right{flex:25%;margin-right:34px}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-wrapper{width:220px;height:220px;border-radius:12px;display:flex;justify-content:center;align-items:center;background:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.light{background-color:rgba(255,255,255,.95)}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.light>p{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.dark{background-color:rgba(10,11,13,.9)}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.dark>p{color:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting>p{font-size:12px;font-weight:bold;margin-top:16px}.-cbwsdk-css-reset .-cbwsdk-connect-content-update-app{border-radius:8px;font-size:14px;line-height:20px;padding:12px;width:339px}.-cbwsdk-css-reset .-cbwsdk-connect-content-update-app.light{background:#eef0f3;color:#5b636e}.-cbwsdk-css-reset .-cbwsdk-connect-content-update-app.dark{background:#1e2025;color:#8a919e}.-cbwsdk-css-reset .-cbwsdk-cancel-button{-webkit-appearance:none;border:none;background:none;cursor:pointer;padding:0;margin:0}.-cbwsdk-css-reset .-cbwsdk-cancel-button-x{position:relative;display:block;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-wallet-steps{padding:0 0 0 16px;margin:0;width:100%;list-style:decimal}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item{list-style-type:decimal;display:list-item;font-style:normal;font-weight:400;font-size:16px;line-height:24px;margin-top:20px}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item-wrapper{display:flex;align-items:center}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-pad-left{margin-left:6px}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon{display:flex;border-radius:50%;height:24px;width:24px}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon svg{margin:auto;display:block}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon.light{background:#0052ff}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon.dark{background:#588af5}.-cbwsdk-css-reset .-cbwsdk-connect-item{align-items:center;display:flex;flex-direction:row;padding:16px 24px;gap:12px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-connect-item.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-item.light.selected{background:#f5f8ff;color:#0052ff}.-cbwsdk-css-reset .-cbwsdk-connect-item.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-item.dark.selected{background:#001033;color:#588af5}.-cbwsdk-css-reset .-cbwsdk-connect-item.selected{border-radius:100px;font-weight:600}.-cbwsdk-css-reset .-cbwsdk-connect-item-copy-wrapper{margin:0 4px 0 8px}.-cbwsdk-css-reset .-cbwsdk-connect-item-title{margin:0 0 0;font-size:16px;line-height:24px;font-weight:500}.-cbwsdk-css-reset .-cbwsdk-connect-item-description{font-weight:400;font-size:14px;line-height:20px;margin:0}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseAppSteps = exports.CoinbaseWalletSteps = exports.ConnectItem = exports.ConnectContent = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst util_1 = require(\"../../util\");\nconst version_1 = require(\"../../version\");\nconst CloseIcon_1 = require(\"../icons/CloseIcon\");\nconst coinbase_round_svg_1 = __importDefault(require(\"../icons/coinbase-round-svg\"));\nconst coinbase_wallet_round_svg_1 = __importDefault(require(\"../icons/coinbase-wallet-round-svg\"));\nconst QRCodeIcon_1 = require(\"../icons/QRCodeIcon\");\nconst QRLogoCoinbase_1 = __importDefault(require(\"../icons/QRLogoCoinbase\"));\nconst QRLogoWallet_1 = __importDefault(require(\"../icons/QRLogoWallet\"));\nconst StatusDotIcon_1 = require(\"../icons/StatusDotIcon\");\nconst QRCode_1 = require(\"../QRCode\");\nconst Spinner_1 = require(\"../Spinner/Spinner\");\nconst ConnectContent_css_1 = __importDefault(require(\"./ConnectContent-css\"));\nconst wallets = {\n \"coinbase-wallet-app\": {\n title: \"Coinbase Wallet app\",\n description: \"Connect with your self-custody wallet\",\n icon: coinbase_wallet_round_svg_1.default,\n steps: CoinbaseWalletSteps,\n },\n \"coinbase-app\": {\n title: \"Coinbase app\",\n description: \"Connect with your Coinbase account\",\n icon: coinbase_round_svg_1.default,\n steps: CoinbaseAppSteps,\n },\n};\nconst makeQrCodeImage = (app) => {\n switch (app) {\n case \"coinbase-app\":\n return QRLogoCoinbase_1.default;\n case \"coinbase-wallet-app\":\n default:\n return QRLogoWallet_1.default;\n }\n};\nconst makeIconColor = (theme) => {\n return theme === \"light\" ? \"#FFFFFF\" : \"#0A0B0D\";\n};\nfunction ConnectContent(props) {\n const { theme } = props;\n const [selected, setSelected] = (0, hooks_1.useState)(\"coinbase-wallet-app\");\n const handleSelect = (0, hooks_1.useCallback)((id) => {\n setSelected(id);\n }, []);\n const qrUrl = (0, util_1.createQrUrl)(props.sessionId, props.sessionSecret, props.linkAPIUrl, props.isParentConnection, props.version, props.chainId);\n const wallet = wallets[selected];\n if (!selected) {\n return null;\n }\n const WalletSteps = wallet.steps;\n const coinbaseApp = selected === \"coinbase-app\";\n return ((0, preact_1.h)(\"div\", { \"data-testid\": \"connect-content\", class: (0, clsx_1.default)(\"-cbwsdk-connect-content\", theme) },\n (0, preact_1.h)(\"style\", null, ConnectContent_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-header\" },\n (0, preact_1.h)(\"h2\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-content-heading\", theme) }, \"Scan to connect with one of our mobile apps\"),\n props.onCancel && ((0, preact_1.h)(\"button\", { type: \"button\", class: \"-cbwsdk-cancel-button\", onClick: props.onCancel },\n (0, preact_1.h)(CloseIcon_1.CloseIcon, { fill: theme === \"light\" ? \"#0A0B0D\" : \"#FFFFFF\" })))),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-layout\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-column-left\" },\n (0, preact_1.h)(\"div\", null, Object.entries(wallets).map(([key, value]) => {\n return ((0, preact_1.h)(ConnectItem, { key: key, title: value.title, description: value.description, icon: value.icon, selected: selected === key, onClick: () => handleSelect(key), theme: theme }));\n })),\n coinbaseApp && ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-content-update-app\", theme) },\n \"Don\\u2019t see a \",\n (0, preact_1.h)(\"strong\", null, \"Scan\"),\n \" option? Update your Coinbase app to the latest version and try again.\"))),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-column-right\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-qr-wrapper\" },\n (0, preact_1.h)(QRCode_1.QRCode, { content: qrUrl, width: 200, height: 200, fgColor: \"#000\", bgColor: \"transparent\", image: {\n svg: makeQrCodeImage(selected),\n width: 25,\n height: 25,\n } }),\n (0, preact_1.h)(\"input\", { type: \"hidden\", name: \"cbw-cbwsdk-version\", value: version_1.LIB_VERSION }),\n (0, preact_1.h)(\"input\", { type: \"hidden\", value: qrUrl })),\n (0, preact_1.h)(WalletSteps, { theme: theme }),\n !props.isConnected && ((0, preact_1.h)(\"div\", { \"data-testid\": \"connecting-spinner\", class: (0, clsx_1.default)(\"-cbwsdk-connect-content-qr-connecting\", theme) },\n (0, preact_1.h)(Spinner_1.Spinner, { size: 36, color: theme === \"dark\" ? \"#FFF\" : \"#000\" }),\n (0, preact_1.h)(\"p\", null, \"Connecting...\")))))));\n}\nexports.ConnectContent = ConnectContent;\nfunction ConnectItem({ title, description, icon, selected, theme, onClick, }) {\n return ((0, preact_1.h)(\"div\", { onClick: onClick, class: (0, clsx_1.default)(\"-cbwsdk-connect-item\", theme, { selected }) },\n (0, preact_1.h)(\"div\", null,\n (0, preact_1.h)(\"img\", { src: icon, alt: title })),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-item-copy-wrapper\" },\n (0, preact_1.h)(\"h3\", { class: \"-cbwsdk-connect-item-title\" }, title),\n (0, preact_1.h)(\"p\", { class: \"-cbwsdk-connect-item-description\" }, description))));\n}\nexports.ConnectItem = ConnectItem;\nfunction CoinbaseWalletSteps({ theme }) {\n return ((0, preact_1.h)(\"ol\", { class: \"-cbwsdk-wallet-steps\" },\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" }, \"Open Coinbase Wallet app\")),\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" },\n (0, preact_1.h)(\"span\", null,\n \"Tap \",\n (0, preact_1.h)(\"strong\", null, \"Scan\"),\n \" \"),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-pad-left\", \"-cbwsdk-wallet-steps-icon\", theme) },\n (0, preact_1.h)(QRCodeIcon_1.QRCodeIcon, { fill: makeIconColor(theme) }))))));\n}\nexports.CoinbaseWalletSteps = CoinbaseWalletSteps;\nfunction CoinbaseAppSteps({ theme }) {\n return ((0, preact_1.h)(\"ol\", { class: \"-cbwsdk-wallet-steps\" },\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" }, \"Open Coinbase app\")),\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" },\n (0, preact_1.h)(\"span\", null,\n \"Tap \",\n (0, preact_1.h)(\"strong\", null, \"More\")),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-pad-left\", \"-cbwsdk-wallet-steps-icon\", theme) },\n (0, preact_1.h)(StatusDotIcon_1.StatusDotIcon, { fill: makeIconColor(theme) })),\n (0, preact_1.h)(\"span\", { class: \"-cbwsdk-wallet-steps-pad-left\" },\n \"then \",\n (0, preact_1.h)(\"strong\", null, \"Scan\")),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-pad-left\", \"-cbwsdk-wallet-steps-icon\", theme) },\n (0, preact_1.h)(QRCodeIcon_1.QRCodeIcon, { fill: makeIconColor(theme) }))))));\n}\nexports.CoinbaseAppSteps = CoinbaseAppSteps;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-connect-dialog{z-index:2147483647;position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop{z-index:2147483647;position:fixed;top:0;left:0;right:0;bottom:0;transition:opacity .25s}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop.light{background-color:rgba(0,0,0,.5)}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop.dark{background-color:rgba(50,53,61,.4)}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop-hidden{opacity:0}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-box{display:flex;position:relative;flex-direction:column;transform:scale(1);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-box-hidden{opacity:0;transform:scale(0.85)}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-container{display:block}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-container-hidden{display:none}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectDialog = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst ConnectContent_1 = require(\"../ConnectContent/ConnectContent\");\nconst TryExtensionContent_1 = require(\"../TryExtensionContent/TryExtensionContent\");\nconst ConnectDialog_css_1 = __importDefault(require(\"./ConnectDialog-css\"));\nconst ConnectDialog = (props) => {\n const { isOpen, darkMode } = props;\n const [containerHidden, setContainerHidden] = (0, hooks_1.useState)(!isOpen);\n const [dialogHidden, setDialogHidden] = (0, hooks_1.useState)(!isOpen);\n (0, hooks_1.useEffect)(() => {\n const timers = [\n window.setTimeout(() => {\n setDialogHidden(!isOpen);\n }, 10),\n ];\n if (isOpen) {\n setContainerHidden(false);\n }\n else {\n timers.push(window.setTimeout(() => {\n setContainerHidden(true);\n }, 360));\n }\n return () => {\n timers.forEach(window.clearTimeout);\n };\n }, [props.isOpen]);\n const theme = darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-dialog-container\", containerHidden && \"-cbwsdk-connect-dialog-container-hidden\") },\n (0, preact_1.h)(\"style\", null, ConnectDialog_css_1.default),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-dialog-backdrop\", theme, dialogHidden && \"-cbwsdk-connect-dialog-backdrop-hidden\") }),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-dialog\" },\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-dialog-box\", dialogHidden && \"-cbwsdk-connect-dialog-box-hidden\") },\n !props.connectDisabled ? ((0, preact_1.h)(ConnectContent_1.ConnectContent, { theme: theme, version: props.version, sessionId: props.sessionId, sessionSecret: props.sessionSecret, linkAPIUrl: props.linkAPIUrl, isConnected: props.isConnected, isParentConnection: props.isParentConnection, chainId: props.chainId, onCancel: props.onCancel })) : null,\n (0, preact_1.h)(TryExtensionContent_1.TryExtensionContent, { theme: theme })))));\n};\nexports.ConnectDialog = ConnectDialog;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkFlow = void 0;\nconst preact_1 = require(\"preact\");\nconst rxjs_1 = require(\"rxjs\");\nconst ConnectDialog_1 = require(\"../ConnectDialog/ConnectDialog\");\nclass LinkFlow {\n constructor(options) {\n this.extensionUI$ = new rxjs_1.BehaviorSubject({});\n this.subscriptions = new rxjs_1.Subscription();\n this.isConnected = false;\n this.chainId = 1;\n this.isOpen = false;\n this.onCancel = null;\n this.root = null;\n // if true, hide QR code in LinkFlow (which happens if no jsonRpcUrl is provided)\n this.connectDisabled = false;\n this.darkMode = options.darkMode;\n this.version = options.version;\n this.sessionId = options.sessionId;\n this.sessionSecret = options.sessionSecret;\n this.linkAPIUrl = options.linkAPIUrl;\n this.isParentConnection = options.isParentConnection;\n this.connected$ = options.connected$;\n this.chainId$ = options.chainId$;\n }\n attach(el) {\n this.root = document.createElement(\"div\");\n this.root.className = \"-cbwsdk-link-flow-root\";\n el.appendChild(this.root);\n this.render();\n this.subscriptions.add(this.connected$.subscribe(v => {\n if (this.isConnected !== v) {\n this.isConnected = v;\n this.render();\n }\n }));\n this.subscriptions.add(this.chainId$.subscribe(chainId => {\n if (this.chainId !== chainId) {\n this.chainId = chainId;\n this.render();\n }\n }));\n }\n detach() {\n var _a;\n if (!this.root) {\n return;\n }\n this.subscriptions.unsubscribe();\n (0, preact_1.render)(null, this.root);\n (_a = this.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.root);\n }\n setConnectDisabled(connectDisabled) {\n this.connectDisabled = connectDisabled;\n }\n open(options) {\n this.isOpen = true;\n this.onCancel = options.onCancel;\n this.render();\n }\n close() {\n this.isOpen = false;\n this.onCancel = null;\n this.render();\n }\n render() {\n if (!this.root) {\n return;\n }\n const subscription = this.extensionUI$.subscribe(() => {\n if (!this.root) {\n return;\n }\n (0, preact_1.render)((0, preact_1.h)(ConnectDialog_1.ConnectDialog, { darkMode: this.darkMode, version: this.version, sessionId: this.sessionId, sessionSecret: this.sessionSecret, linkAPIUrl: this.linkAPIUrl, isOpen: this.isOpen, isConnected: this.isConnected, isParentConnection: this.isParentConnection, chainId: this.chainId, onCancel: this.onCancel, connectDisabled: this.connectDisabled }), this.root);\n });\n this.subscriptions.add(subscription);\n }\n}\nexports.LinkFlow = LinkFlow;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCode = void 0;\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst qrcode_svg_1 = __importDefault(require(\"../vendor-js/qrcode-svg\"));\nconst QRCode = props => {\n const [svg, setSvg] = (0, hooks_1.useState)(\"\");\n (0, hooks_1.useEffect)(() => {\n var _a, _b;\n const qrcode = new qrcode_svg_1.default({\n content: props.content,\n background: props.bgColor || \"#ffffff\",\n color: props.fgColor || \"#000000\",\n container: \"svg\",\n ecl: \"M\",\n width: (_a = props.width) !== null && _a !== void 0 ? _a : 256,\n height: (_b = props.height) !== null && _b !== void 0 ? _b : 256,\n padding: 0,\n image: props.image,\n });\n const base64 = Buffer.from(qrcode.svg(), \"utf8\").toString(\"base64\");\n setSvg(`data:image/svg+xml;base64,${base64}`);\n });\n return svg ? (0, preact_1.h)(\"img\", { src: svg, alt: \"QR Code\" }) : null;\n};\nexports.QRCode = QRCode;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-gear-container{margin-left:16px !important;margin-right:9px !important;display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:opacity .25s}.-cbwsdk-css-reset .-gear-container *{user-select:none}.-cbwsdk-css-reset .-gear-container svg{opacity:0;position:absolute}.-cbwsdk-css-reset .-gear-icon{height:12px;width:12px;z-index:10000}.-cbwsdk-css-reset .-cbwsdk-snackbar{align-items:flex-end;display:flex;flex-direction:column;position:fixed;right:0;top:0;z-index:2147483647}.-cbwsdk-css-reset .-cbwsdk-snackbar *{user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance{display:flex;flex-direction:column;margin:8px 16px 0 16px;overflow:visible;text-align:left;transform:translateX(0);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header:hover .-gear-container svg{opacity:1}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header{display:flex;align-items:center;background:#fff;overflow:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-cblogo{margin:8px 8px 8px 8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-message{color:#000;font-size:13px;line-height:1.5;user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu{background:#fff;transition:opacity .25s ease-in-out,transform .25s linear,visibility 0s;visibility:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;opacity:0;flex-direction:column;padding-left:8px;padding-right:8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:last-child{margin-bottom:8px !important}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover{background:#f5f7f8;border-radius:6px;transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover span{color:#050f19;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover svg path{fill:#000;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item{visibility:inherit;height:35px;margin-top:8px;margin-bottom:0;display:flex;flex-direction:row;align-items:center;padding:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item *{visibility:inherit;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover{background:rgba(223,95,103,.2);transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover svg path{fill:#df5f67;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover span{color:#df5f67;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-info{color:#aaa;font-size:13px;margin:0 8px 0 32px;position:absolute}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-hidden{opacity:0;text-align:left;transform:translateX(25%);transition:opacity .5s linear}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-expanded .-cbwsdk-snackbar-instance-menu{opacity:1;display:flex;transform:translateY(8px);visibility:visible}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SnackbarInstance = exports.SnackbarContainer = exports.Snackbar = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst Snackbar_css_1 = __importDefault(require(\"./Snackbar-css\"));\nconst gearIcon = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDYuNzV2LTEuNWwtMS43Mi0uNTdjLS4wOC0uMjctLjE5LS41Mi0uMzItLjc3bC44MS0xLjYyLTEuMDYtMS4wNi0xLjYyLjgxYy0uMjQtLjEzLS41LS4yNC0uNzctLjMyTDYuNzUgMGgtMS41bC0uNTcgMS43MmMtLjI3LjA4LS41My4xOS0uNzcuMzJsLTEuNjItLjgxLTEuMDYgMS4wNi44MSAxLjYyYy0uMTMuMjQtLjI0LjUtLjMyLjc3TDAgNS4yNXYxLjVsMS43Mi41N2MuMDguMjcuMTkuNTMuMzIuNzdsLS44MSAxLjYyIDEuMDYgMS4wNiAxLjYyLS44MWMuMjQuMTMuNS4yMy43Ny4zMkw1LjI1IDEyaDEuNWwuNTctMS43MmMuMjctLjA4LjUyLS4xOS43Ny0uMzJsMS42Mi44MSAxLjA2LTEuMDYtLjgxLTEuNjJjLjEzLS4yNC4yMy0uNS4zMi0uNzdMMTIgNi43NXpNNiA4LjVhMi41IDIuNSAwIDAxMC01IDIuNSAyLjUgMCAwMTAgNXoiIGZpbGw9IiMwNTBGMTkiLz48L3N2Zz4=`;\nfunction makeSnackbarIcon(appSrc) {\n switch (appSrc) {\n case \"coinbase-app\":\n return `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0LjY3NCAxOC44NThjLTIuMDQ1IDAtMy42NDgtMS43MjItMy42NDgtMy44NDVzMS42NTktMy44NDUgMy42NDgtMy44NDVjMS44MjQgMCAzLjMxNyAxLjM3NyAzLjU5MyAzLjIxNGgzLjcwM2MtLjMzMS0zLjk2LTMuNDgyLTcuMDU5LTcuMjk2LTcuMDU5LTQuMDM0IDAtNy4zNSAzLjQ0My03LjM1IDcuNjkgMCA0LjI0NiAzLjI2IDcuNjkgNy4zNSA3LjY5IDMuODcgMCA2Ljk2NS0zLjEgNy4yOTYtNy4wNTloLTMuNzAzYy0uMjc2IDEuODM2LTEuNzY5IDMuMjE0LTMuNTkzIDMuMjE0WiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0wIDEwLjY3OGMwLTMuNzExIDAtNS41OTYuNzQyLTcuMDIzQTYuNTMyIDYuNTMyIDAgMCAxIDMuNjU1Ljc0MkM1LjA4MiAwIDYuOTY3IDAgMTAuNjc4IDBoNy45MzhjMy43MTEgMCA1LjU5NiAwIDcuMDIzLjc0MmE2LjUzMSA2LjUzMSAwIDAgMSAyLjkxMyAyLjkxM2MuNzQyIDEuNDI3Ljc0MiAzLjMxMi43NDIgNy4wMjN2Ny45MzhjMCAzLjcxMSAwIDUuNTk2LS43NDIgNy4wMjNhNi41MzEgNi41MzEgMCAwIDEtMi45MTMgMi45MTNjLTEuNDI3Ljc0Mi0zLjMxMi43NDItNy4wMjMuNzQyaC03LjkzOGMtMy43MTEgMC01LjU5NiAwLTcuMDIzLS43NDJhNi41MzEgNi41MzEgMCAwIDEtMi45MTMtMi45MTNDMCAyNC4yMTIgMCAyMi4zODQgMCAxOC42MTZ2LTcuOTM4WiIgZmlsbD0iIzAwNTJGRiIvPjxwYXRoIGQ9Ik0xNC42ODQgMTkuNzczYy0yLjcyNyAwLTQuODY0LTIuMjk1LTQuODY0LTUuMTI2IDAtMi44MzEgMi4yMS01LjEyNyA0Ljg2NC01LjEyNyAyLjQzMiAwIDQuNDIyIDEuODM3IDQuNzkgNC4yODVoNC45MzhjLS40NDItNS4yOC00LjY0My05LjQxMS05LjcyOC05LjQxMS01LjM4IDAtOS44MDIgNC41OS05LjgwMiAxMC4yNTMgMCA1LjY2MiA0LjM0OCAxMC4yNTMgOS44MDIgMTAuMjUzIDUuMTU5IDAgOS4yODYtNC4xMzIgOS43MjgtOS40MTFoLTQuOTM4Yy0uMzY4IDIuNDQ4LTIuMzU4IDQuMjg0LTQuNzkgNC4yODRaIiBmaWxsPSIjZmZmIi8+PC9zdmc+`;\n case \"coinbase-wallet-app\":\n default:\n return `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDkyIDEwLjQxOWE4LjkzIDguOTMgMCAwMTguOTMtOC45M2gxMS4xNjNhOC45MyA4LjkzIDAgMDE4LjkzIDguOTN2MTEuMTYzYTguOTMgOC45MyAwIDAxLTguOTMgOC45M0gxMC40MjJhOC45MyA4LjkzIDAgMDEtOC45My04LjkzVjEwLjQxOXoiIGZpbGw9IiMxNjUyRjAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjQxOSAwSDIxLjU4QzI3LjMzNSAwIDMyIDQuNjY1IDMyIDEwLjQxOVYyMS41OEMzMiAyNy4zMzUgMjcuMzM1IDMyIDIxLjU4MSAzMkgxMC40MkM0LjY2NSAzMiAwIDI3LjMzNSAwIDIxLjU4MVYxMC40MkMwIDQuNjY1IDQuNjY1IDAgMTAuNDE5IDB6bTAgMS40ODhhOC45MyA4LjkzIDAgMDAtOC45MyA4LjkzdjExLjE2M2E4LjkzIDguOTMgMCAwMDguOTMgOC45M0gyMS41OGE4LjkzIDguOTMgMCAwMDguOTMtOC45M1YxMC40MmE4LjkzIDguOTMgMCAwMC04LjkzLTguOTNIMTAuNDJ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45OTggMjYuMDQ5Yy01LjU0OSAwLTEwLjA0Ny00LjQ5OC0xMC4wNDctMTAuMDQ3IDAtNS41NDggNC40OTgtMTAuMDQ2IDEwLjA0Ny0xMC4wNDYgNS41NDggMCAxMC4wNDYgNC40OTggMTAuMDQ2IDEwLjA0NiAwIDUuNTQ5LTQuNDk4IDEwLjA0Ny0xMC4wNDYgMTAuMDQ3eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMi43NjIgMTQuMjU0YzAtLjgyMi42NjctMS40ODkgMS40ODktMS40ODloMy40OTdjLjgyMiAwIDEuNDg4LjY2NiAxLjQ4OCAxLjQ4OXYzLjQ5N2MwIC44MjItLjY2NiAxLjQ4OC0xLjQ4OCAxLjQ4OGgtMy40OTdhMS40ODggMS40ODggMCAwMS0xLjQ4OS0xLjQ4OHYtMy40OTh6IiBmaWxsPSIjMTY1MkYwIi8+PC9zdmc+`;\n }\n}\nclass Snackbar {\n constructor(options) {\n this.items = new Map();\n this.nextItemKey = 0;\n this.root = null;\n this.darkMode = options.darkMode;\n }\n attach(el) {\n this.root = document.createElement(\"div\");\n this.root.className = \"-cbwsdk-snackbar-root\";\n el.appendChild(this.root);\n this.render();\n }\n presentItem(itemProps) {\n const key = this.nextItemKey++;\n this.items.set(key, itemProps);\n this.render();\n return () => {\n this.items.delete(key);\n this.render();\n };\n }\n clear() {\n this.items.clear();\n this.render();\n }\n render() {\n if (!this.root) {\n return;\n }\n (0, preact_1.render)((0, preact_1.h)(\"div\", null,\n (0, preact_1.h)(exports.SnackbarContainer, { darkMode: this.darkMode }, Array.from(this.items.entries()).map(([key, itemProps]) => ((0, preact_1.h)(exports.SnackbarInstance, Object.assign({}, itemProps, { key: key })))))), this.root);\n }\n}\nexports.Snackbar = Snackbar;\nconst SnackbarContainer = props => ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-container\") },\n (0, preact_1.h)(\"style\", null, Snackbar_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar\" }, props.children)));\nexports.SnackbarContainer = SnackbarContainer;\nconst SnackbarInstance = ({ autoExpand, message, menuItems, appSrc, }) => {\n const [hidden, setHidden] = (0, hooks_1.useState)(true);\n const [expanded, setExpanded] = (0, hooks_1.useState)(autoExpand !== null && autoExpand !== void 0 ? autoExpand : false);\n (0, hooks_1.useEffect)(() => {\n const timers = [\n window.setTimeout(() => {\n setHidden(false);\n }, 1),\n window.setTimeout(() => {\n setExpanded(true);\n }, 10000),\n ];\n return () => {\n timers.forEach(window.clearTimeout);\n };\n });\n const toggleExpanded = () => {\n setExpanded(!expanded);\n };\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance\", hidden && \"-cbwsdk-snackbar-instance-hidden\", expanded && \"-cbwsdk-snackbar-instance-expanded\") },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-header\", onClick: toggleExpanded },\n (0, preact_1.h)(\"img\", { src: makeSnackbarIcon(appSrc), class: \"-cbwsdk-snackbar-instance-header-cblogo\" }),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-header-message\" }, message),\n (0, preact_1.h)(\"div\", { class: \"-gear-container\" },\n !expanded && ((0, preact_1.h)(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n (0, preact_1.h)(\"circle\", { cx: \"12\", cy: \"12\", r: \"12\", fill: \"#F5F7F8\" }))),\n (0, preact_1.h)(\"img\", { src: gearIcon, class: \"-gear-icon\", title: \"Expand\" }))),\n menuItems && menuItems.length > 0 && ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-menu\" }, menuItems.map((action, i) => ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance-menu-item\", action.isRed && \"-cbwsdk-snackbar-instance-menu-item-is-red\"), onClick: action.onClick, key: i },\n (0, preact_1.h)(\"svg\", { width: action.svgWidth, height: action.svgHeight, viewBox: \"0 0 10 11\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n (0, preact_1.h)(\"path\", { \"fill-rule\": action.defaultFillRule, \"clip-rule\": action.defaultClipRule, d: action.path, fill: \"#AAAAAA\" })),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance-menu-item-info\", action.isRed &&\n \"-cbwsdk-snackbar-instance-menu-item-info-is-red\") }, action.info))))))));\n};\nexports.SnackbarInstance = SnackbarInstance;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-spinner{display:inline-block}.-cbwsdk-css-reset .-cbwsdk-spinner svg{display:inline-block;animation:2s linear infinite -cbwsdk-spinner-svg}.-cbwsdk-css-reset .-cbwsdk-spinner svg circle{animation:1.9s ease-in-out infinite both -cbwsdk-spinner-circle;display:block;fill:rgba(0,0,0,0);stroke-dasharray:283;stroke-dashoffset:280;stroke-linecap:round;stroke-width:10px;transform-origin:50% 50%}@keyframes -cbwsdk-spinner-svg{0%{transform:rotateZ(0deg)}100%{transform:rotateZ(360deg)}}@keyframes -cbwsdk-spinner-circle{0%,25%{stroke-dashoffset:280;transform:rotate(0)}50%,75%{stroke-dashoffset:75;transform:rotate(45deg)}100%{stroke-dashoffset:280;transform:rotate(360deg)}}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Spinner = void 0;\nconst preact_1 = require(\"preact\");\nconst Spinner_css_1 = __importDefault(require(\"./Spinner-css\"));\nconst Spinner = props => {\n var _a;\n const size = (_a = props.size) !== null && _a !== void 0 ? _a : 64;\n const color = props.color || \"#000\";\n return ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-spinner\" },\n (0, preact_1.h)(\"style\", null, Spinner_css_1.default),\n (0, preact_1.h)(\"svg\", { viewBox: \"0 0 100 100\", xmlns: \"http://www.w3.org/2000/svg\", style: { width: size, height: size } },\n (0, preact_1.h)(\"circle\", { style: { cx: 50, cy: 50, r: 45, stroke: color } }))));\n};\nexports.Spinner = Spinner;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-try-extension{display:flex;margin-top:12px;height:202px;width:700px;border-radius:12px;padding:30px}.-cbwsdk-css-reset .-cbwsdk-try-extension.light{background:#fff}.-cbwsdk-css-reset .-cbwsdk-try-extension.dark{background:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-try-extension-column-half{flex:50%}.-cbwsdk-css-reset .-cbwsdk-try-extension-heading{font-style:normal;font-weight:500;font-size:25px;line-height:32px;margin:0;max-width:204px}.-cbwsdk-css-reset .-cbwsdk-try-extension-heading.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-try-extension-heading.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta{appearance:none;border:none;background:none;color:#0052ff;cursor:pointer;padding:0;text-decoration:none;display:block;font-weight:600;font-size:16px;line-height:24px}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta.light{color:#0052ff}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta.dark{color:#588af5}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta-wrapper{display:flex;align-items:center;margin-top:12px}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta-icon{display:block;margin-left:4px;height:14px}.-cbwsdk-css-reset .-cbwsdk-try-extension-list{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:0;padding:0;list-style:none;height:100%}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item{display:flex;align-items:center;flex-flow:nowrap;margin-top:24px}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item:first-of-type{margin-top:0}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon-wrapper{display:block}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon{display:flex;height:32px;width:32px;border-radius:50%}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon svg{margin:auto;display:block}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon.light{background:#eef0f3}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon.dark{background:#1e2025}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-copy{display:block;font-weight:400;font-size:14px;line-height:20px;padding-left:12px}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-copy.light{color:#5b636e}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-copy.dark{color:#8a919e}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TryExtensionContent = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst ArrowLeftIcon_1 = require(\"../icons/ArrowLeftIcon\");\nconst LaptopIcon_1 = require(\"../icons/LaptopIcon\");\nconst SafeIcon_1 = require(\"../icons/SafeIcon\");\nconst TryExtensionContent_css_1 = __importDefault(require(\"./TryExtensionContent-css\"));\nfunction TryExtensionContent({ theme }) {\n const [clicked, setClicked] = (0, hooks_1.useState)(false);\n const handleInstallClick = (0, hooks_1.useCallback)(() => {\n window.open(\"https://api.wallet.coinbase.com/rpc/v2/desktop/chrome\", \"_blank\");\n }, []);\n const handleClick = (0, hooks_1.useCallback)(() => {\n if (clicked) {\n window.location.reload();\n }\n else {\n handleInstallClick();\n setClicked(true);\n }\n }, [handleInstallClick, clicked]);\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension\", theme) },\n (0, preact_1.h)(\"style\", null, TryExtensionContent_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-column-half\" },\n (0, preact_1.h)(\"h3\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-heading\", theme) }, \"Or try the Coinbase Wallet browser extension\"),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-cta-wrapper\" },\n (0, preact_1.h)(\"button\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-cta\", theme), onClick: handleClick }, clicked ? \"Refresh\" : \"Install\"),\n (0, preact_1.h)(\"div\", null, !clicked && ((0, preact_1.h)(ArrowLeftIcon_1.ArrowLeftIcon, { class: \"-cbwsdk-try-extension-cta-icon\", fill: theme === \"light\" ? \"#0052FF\" : \"#588AF5\" }))))),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-column-half\" },\n (0, preact_1.h)(\"ul\", { class: \"-cbwsdk-try-extension-list\" },\n (0, preact_1.h)(\"li\", { class: \"-cbwsdk-try-extension-list-item\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-list-item-icon-wrapper\" },\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-icon\", theme) },\n (0, preact_1.h)(LaptopIcon_1.LaptopIcon, { fill: theme === \"light\" ? \"#0A0B0D\" : \"#FFFFFF\" }))),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-copy\", theme) }, \"Connect with dapps with just one click on your desktop browser\")),\n (0, preact_1.h)(\"li\", { class: \"-cbwsdk-try-extension-list-item\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-list-item-icon-wrapper\" },\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-icon\", theme) },\n (0, preact_1.h)(SafeIcon_1.SafeIcon, { fill: theme === \"light\" ? \"#0A0B0D\" : \"#FFFFFF\" }))),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-copy\", theme) }, \"Add an additional layer of security by using a supported Ledger hardware wallet\"))))));\n}\nexports.TryExtensionContent = TryExtensionContent;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrowLeftIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction ArrowLeftIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M8.60675 0.155884L7.37816 1.28209L12.7723 7.16662H0V8.83328H12.6548L6.82149 14.6666L8 15.8451L15.8201 8.02501L8.60675 0.155884Z\" })));\n}\nexports.ArrowLeftIcon = ArrowLeftIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CloseIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction CloseIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"40\", height: \"40\", viewBox: \"0 0 40 40\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M13.7677 13L12.3535 14.4142L18.3535 20.4142L12.3535 26.4142L13.7677 27.8284L19.7677 21.8284L25.7677 27.8284L27.1819 26.4142L21.1819 20.4142L27.1819 14.4142L25.7677 13L19.7677 19L13.7677 13Z\" })));\n}\nexports.CloseIcon = CloseIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LaptopIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction LaptopIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"14\", height: \"14\", viewBox: \"0 0 14 14\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M1.8001 2.2002H12.2001V9.40019H1.8001V2.2002ZM3.4001 3.8002V7.80019H10.6001V3.8002H3.4001Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M13.4001 10.2002H0.600098C0.600098 11.0838 1.31644 11.8002 2.2001 11.8002H11.8001C12.6838 11.8002 13.4001 11.0838 13.4001 10.2002Z\" })));\n}\nexports.LaptopIcon = LaptopIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCodeIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction QRCodeIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"10\", height: \"10\", viewBox: \"0 0 10 10\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M8.2271 1.77124L7.0271 1.77124V2.97124H8.2271V1.77124Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M5.44922 0.199219L5.44922 4.54922L9.79922 4.54922V0.199219L5.44922 0.199219ZM8.89922 3.64922L6.34922 3.64922L6.34922 1.09922L8.89922 1.09922V3.64922Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M2.97124 1.77124L1.77124 1.77124L1.77124 2.97124H2.97124V1.77124Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M0.199219 4.54922L4.54922 4.54922L4.54922 0.199219L0.199219 0.199219L0.199219 4.54922ZM1.09922 1.09922L3.64922 1.09922L3.64922 3.64922L1.09922 3.64922L1.09922 1.09922Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M2.97124 7.0271H1.77124L1.77124 8.2271H2.97124V7.0271Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M0.199219 9.79922H4.54922L4.54922 5.44922L0.199219 5.44922L0.199219 9.79922ZM1.09922 6.34922L3.64922 6.34922L3.64922 8.89922H1.09922L1.09922 6.34922Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M8.89922 7.39912H7.99922V5.40112H5.44922L5.44922 9.79912H6.34922L6.34922 6.30112H7.09922V8.29912H9.79922V5.40112H8.89922V7.39912Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M7.99912 8.89917H7.09912V9.79917H7.99912V8.89917Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M9.79917 8.89917H8.89917V9.79917H9.79917V8.89917Z\" })));\n}\nexports.QRCodeIcon = QRCodeIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst svg = `\n \n \n \n \n \n`;\nexports.default = svg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `\n \n \n \n \n \n \n`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SafeIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction SafeIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"14\", height: \"14\", viewBox: \"0 0 14 14\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M0.600098 0.600098V11.8001H13.4001V0.600098H0.600098ZM7.0001 9.2001C5.3441 9.2001 4.0001 7.8561 4.0001 6.2001C4.0001 4.5441 5.3441 3.2001 7.0001 3.2001C8.6561 3.2001 10.0001 4.5441 10.0001 6.2001C10.0001 7.8561 8.6561 9.2001 7.0001 9.2001ZM0.600098 12.6001H3.8001V13.4001H0.600098V12.6001ZM10.2001 12.6001H13.4001V13.4001H10.2001V12.6001ZM8.8001 6.2001C8.8001 7.19421 7.99421 8.0001 7.0001 8.0001C6.00598 8.0001 5.2001 7.19421 5.2001 6.2001C5.2001 5.20598 6.00598 4.4001 7.0001 4.4001C7.99421 4.4001 8.8001 5.20598 8.8001 6.2001Z\" })));\n}\nexports.SafeIcon = SafeIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StatusDotIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction StatusDotIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"10\", height: \"10\", viewBox: \"0 0 10 10\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M2.29995 4.99995C2.29995 5.57985 1.82985 6.04995 1.24995 6.04995C0.670052 6.04995 0.199951 5.57985 0.199951 4.99995C0.199951 4.42005 0.670052 3.94995 1.24995 3.94995C1.82985 3.94995 2.29995 4.42005 2.29995 4.99995ZM4.99995 6.04995C5.57985 6.04995 6.04995 5.57985 6.04995 4.99995C6.04995 4.42005 5.57985 3.94995 4.99995 3.94995C4.42005 3.94995 3.94995 4.42005 3.94995 4.99995C3.94995 5.57985 4.42005 6.04995 4.99995 6.04995ZM8.74995 6.04995C9.32985 6.04995 9.79995 5.57985 9.79995 4.99995C9.79995 4.42005 9.32985 3.94995 8.74995 3.94995C8.17005 3.94995 7.69995 4.42005 7.69995 4.99995C7.69995 5.57985 8.17005 6.04995 8.74995 6.04995Z\" })));\n}\nexports.StatusDotIcon = StatusDotIcon;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTQiIGN5PSIxNCIgcj0iMTQiIGZpbGw9IiMwMDUyRkYiLz48cGF0aCBkPSJNMTQuMDM3IDE4LjkyNmMtMi43NSAwLTQuOTA3LTIuMjA1LTQuOTA3LTQuOTI2IDAtMi43MiAyLjIzLTQuOTI2IDQuOTA3LTQuOTI2YTQuODY2IDQuODY2IDAgMCAxIDQuODMzIDQuMTE4aDQuOTgyYy0uNDQ2LTUuMDczLTQuNjg0LTkuMDQ0LTkuODE1LTkuMDQ0QzguNjEgNC4xNDggNC4xNDkgOC41NiA0LjE0OSAxNHM0LjM4NyA5Ljg1MiA5Ljg5IDkuODUyYzUuMjA0IDAgOS4zNjgtMy45NyA5LjgxNC05LjA0M0gxOC44N2E0Ljg2NiA0Ljg2NiAwIDAgMS00LjgzMyA0LjExN1oiIGZpbGw9IiNmZmYiLz48L3N2Zz4=`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTQiIGN5PSIxNCIgcj0iMTQiIGZpbGw9IiMwMDUyRkYiLz48cGF0aCBkPSJNMjMuODUyIDE0QTkuODM0IDkuODM0IDAgMCAxIDE0IDIzLjg1MiA5LjgzNCA5LjgzNCAwIDAgMSA0LjE0OCAxNCA5LjgzNCA5LjgzNCAwIDAgMSAxNCA0LjE0OCA5LjgzNCA5LjgzNCAwIDAgMSAyMy44NTIgMTRaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTExLjE4NSAxMi41MDRjMC0uNDU2IDAtLjcxLjA5OC0uODYyLjA5OC0uMTUyLjE5Ni0uMzA0LjM0My0uMzU1LjE5Ni0uMTAyLjM5Mi0uMTAyLjg4MS0uMTAyaDIuOTg2Yy40OSAwIC42ODYgMCAuODgyLjEwMi4xNDYuMTAxLjI5My4yMDMuMzQyLjM1NS4wOTguMjAzLjA5OC40MDYuMDk4Ljg2MnYyLjk5MmMwIC40NTcgMCAuNzEtLjA5OC44NjMtLjA5OC4xNTItLjE5NS4zMDQtLjM0Mi4zNTUtLjE5Ni4xMDEtLjM5Mi4xMDEtLjg4Mi4xMDFoLTIuOTg2Yy0uNDkgMC0uNjg1IDAtLjg4LS4xMDEtLjE0OC0uMTAyLS4yOTUtLjIwMy0uMzQ0LS4zNTUtLjA5OC0uMjAzLS4wOTgtLjQwNi0uMDk4LS44NjN2LTIuOTkyWiIgZmlsbD0iIzAwNTJGRiIvPjwvc3ZnPg==`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientMessagePublishEvent = exports.ClientMessageSetSessionConfig = exports.ClientMessageGetSessionConfig = exports.ClientMessageIsLinked = exports.ClientMessageHostSession = void 0;\nfunction ClientMessageHostSession(params) {\n return Object.assign({ type: \"HostSession\" }, params);\n}\nexports.ClientMessageHostSession = ClientMessageHostSession;\nfunction ClientMessageIsLinked(params) {\n return Object.assign({ type: \"IsLinked\" }, params);\n}\nexports.ClientMessageIsLinked = ClientMessageIsLinked;\nfunction ClientMessageGetSessionConfig(params) {\n return Object.assign({ type: \"GetSessionConfig\" }, params);\n}\nexports.ClientMessageGetSessionConfig = ClientMessageGetSessionConfig;\nfunction ClientMessageSetSessionConfig(params) {\n return Object.assign({ type: \"SetSessionConfig\" }, params);\n}\nexports.ClientMessageSetSessionConfig = ClientMessageSetSessionConfig;\nfunction ClientMessagePublishEvent(params) {\n return Object.assign({ type: \"PublishEvent\" }, params);\n}\nexports.ClientMessagePublishEvent = ClientMessagePublishEvent;\n","\"use strict\";\n// DiagnosticLogger for debugging purposes only\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENTS = void 0;\nexports.EVENTS = {\n STARTED_CONNECTING: \"walletlink_sdk.started.connecting\",\n CONNECTED_STATE_CHANGE: \"walletlink_sdk.connected\",\n DISCONNECTED: \"walletlink_sdk.disconnected\",\n METADATA_DESTROYED: \"walletlink_sdk_metadata_destroyed\",\n LINKED: \"walletlink_sdk.linked\",\n FAILURE: \"walletlink_sdk.generic_failure\",\n SESSION_CONFIG_RECEIVED: \"walletlink_sdk.session_config_event_received\",\n ETH_ACCOUNTS_STATE: \"walletlink_sdk.eth_accounts_state\",\n SESSION_STATE_CHANGE: \"walletlink_sdk.session_state_change\",\n UNLINKED_ERROR_STATE: \"walletlink_sdk.unlinked_error_state\",\n SKIPPED_CLEARING_SESSION: \"walletlink_sdk.skipped_clearing_session\",\n GENERAL_ERROR: \"walletlink_sdk.general_error\",\n WEB3_REQUEST: \"walletlink_sdk.web3.request\",\n WEB3_REQUEST_PUBLISHED: \"walletlink_sdk.web3.request_published\",\n WEB3_RESPONSE: \"walletlink_sdk.web3.response\",\n UNKNOWN_ADDRESS_ENCOUNTERED: \"walletlink_sdk.unknown_address_encountered\",\n};\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RxWebSocket = exports.ConnectionState = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"DISCONNECTED\"] = 0] = \"DISCONNECTED\";\n ConnectionState[ConnectionState[\"CONNECTING\"] = 1] = \"CONNECTING\";\n ConnectionState[ConnectionState[\"CONNECTED\"] = 2] = \"CONNECTED\";\n})(ConnectionState = exports.ConnectionState || (exports.ConnectionState = {}));\n/**\n * Rx-ified WebSocket\n */\nclass RxWebSocket {\n /**\n * Constructor\n * @param url WebSocket server URL\n * @param [WebSocketClass] Custom WebSocket implementation\n */\n constructor(url, WebSocketClass = WebSocket) {\n this.WebSocketClass = WebSocketClass;\n this.webSocket = null;\n this.connectionStateSubject = new rxjs_1.BehaviorSubject(ConnectionState.DISCONNECTED);\n this.incomingDataSubject = new rxjs_1.Subject();\n this.url = url.replace(/^http/, \"ws\");\n }\n /**\n * Make a websocket connection\n * @returns an Observable that completes when connected\n */\n connect() {\n if (this.webSocket) {\n return (0, rxjs_1.throwError)(new Error(\"webSocket object is not null\"));\n }\n return new rxjs_1.Observable(obs => {\n let webSocket;\n try {\n this.webSocket = webSocket = new this.WebSocketClass(this.url);\n }\n catch (err) {\n obs.error(err);\n return;\n }\n this.connectionStateSubject.next(ConnectionState.CONNECTING);\n webSocket.onclose = evt => {\n this.clearWebSocket();\n obs.error(new Error(`websocket error ${evt.code}: ${evt.reason}`));\n this.connectionStateSubject.next(ConnectionState.DISCONNECTED);\n };\n webSocket.onopen = _ => {\n obs.next();\n obs.complete();\n this.connectionStateSubject.next(ConnectionState.CONNECTED);\n };\n webSocket.onmessage = evt => {\n this.incomingDataSubject.next(evt.data);\n };\n }).pipe((0, operators_1.take)(1));\n }\n /**\n * Disconnect from server\n */\n disconnect() {\n const { webSocket } = this;\n if (!webSocket) {\n return;\n }\n this.clearWebSocket();\n this.connectionStateSubject.next(ConnectionState.DISCONNECTED);\n try {\n webSocket.close();\n }\n catch (_a) { }\n }\n /**\n * Emit current connection state and subsequent changes\n * @returns an Observable for the connection state\n */\n get connectionState$() {\n return this.connectionStateSubject.asObservable();\n }\n /**\n * Emit incoming data from server\n * @returns an Observable for the data received\n */\n get incomingData$() {\n return this.incomingDataSubject.asObservable();\n }\n /**\n * Emit incoming JSON data from server. non-JSON data are ignored\n * @returns an Observable for parsed JSON data\n */\n get incomingJSONData$() {\n return this.incomingData$.pipe((0, operators_1.flatMap)(m => {\n let j;\n try {\n j = JSON.parse(m);\n }\n catch (err) {\n return (0, rxjs_1.empty)();\n }\n return (0, rxjs_1.of)(j);\n }));\n }\n /**\n * Send data to server\n * @param data text to send\n */\n sendData(data) {\n const { webSocket } = this;\n if (!webSocket) {\n throw new Error(\"websocket is not connected\");\n }\n webSocket.send(data);\n }\n clearWebSocket() {\n const { webSocket } = this;\n if (!webSocket) {\n return;\n }\n this.webSocket = null;\n webSocket.onclose = null;\n webSocket.onerror = null;\n webSocket.onmessage = null;\n webSocket.onopen = null;\n }\n}\nexports.RxWebSocket = RxWebSocket;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isServerMessageFail = void 0;\nfunction isServerMessageFail(msg) {\n return (msg &&\n msg.type === \"Fail\" &&\n typeof msg.id === \"number\" &&\n typeof msg.sessionId === \"string\" &&\n typeof msg.error === \"string\");\n}\nexports.isServerMessageFail = isServerMessageFail;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKConnection = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst Session_1 = require(\"../relay/Session\");\nconst types_1 = require(\"../types\");\nconst ClientMessage_1 = require(\"./ClientMessage\");\nconst DiagnosticLogger_1 = require(\"./DiagnosticLogger\");\nconst RxWebSocket_1 = require(\"./RxWebSocket\");\nconst ServerMessage_1 = require(\"./ServerMessage\");\nconst HEARTBEAT_INTERVAL = 10000;\nconst REQUEST_TIMEOUT = 60000;\n/**\n * Coinbase Wallet Connection\n */\nclass WalletSDKConnection {\n /**\n * Constructor\n * @param sessionId Session ID\n * @param sessionKey Session Key\n * @param linkAPIUrl Coinbase Wallet link server URL\n * @param [WebSocketClass] Custom WebSocket implementation\n */\n constructor(sessionId, sessionKey, linkAPIUrl, diagnostic, WebSocketClass = WebSocket) {\n this.sessionId = sessionId;\n this.sessionKey = sessionKey;\n this.diagnostic = diagnostic;\n this.subscriptions = new rxjs_1.Subscription();\n this.destroyed = false;\n this.lastHeartbeatResponse = 0;\n this.nextReqId = (0, types_1.IntNumber)(1);\n this.connectedSubject = new rxjs_1.BehaviorSubject(false);\n this.linkedSubject = new rxjs_1.BehaviorSubject(false);\n this.sessionConfigSubject = new rxjs_1.ReplaySubject(1);\n const ws = new RxWebSocket_1.RxWebSocket(linkAPIUrl + \"/rpc\", WebSocketClass);\n this.ws = ws;\n // attempt to reconnect every 5 seconds when disconnected\n this.subscriptions.add(ws.connectionState$\n .pipe((0, operators_1.tap)(state => {\n var _a;\n return (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.CONNECTED_STATE_CHANGE, {\n state,\n sessionIdHash: Session_1.Session.hash(sessionId),\n });\n }), \n // ignore initial DISCONNECTED state\n (0, operators_1.skip)(1), \n // if DISCONNECTED and not destroyed\n (0, operators_1.filter)(cs => cs === RxWebSocket_1.ConnectionState.DISCONNECTED && !this.destroyed), \n // wait 5 seconds\n (0, operators_1.delay)(5000), \n // check whether it's destroyed again\n (0, operators_1.filter)(_ => !this.destroyed), \n // reconnect\n (0, operators_1.flatMap)(_ => ws.connect()), (0, operators_1.retry)())\n .subscribe());\n // perform authentication upon connection\n this.subscriptions.add(ws.connectionState$\n .pipe(\n // ignore initial DISCONNECTED and CONNECTING states\n (0, operators_1.skip)(2), (0, operators_1.switchMap)(cs => (0, rxjs_1.iif)(() => cs === RxWebSocket_1.ConnectionState.CONNECTED, \n // if CONNECTED, authenticate, and then check link status\n this.authenticate().pipe((0, operators_1.tap)(_ => this.sendIsLinked()), (0, operators_1.tap)(_ => this.sendGetSessionConfig()), (0, operators_1.map)(_ => true)), \n // if not CONNECTED, emit false immediately\n (0, rxjs_1.of)(false))), (0, operators_1.distinctUntilChanged)(), (0, operators_1.catchError)(_ => (0, rxjs_1.of)(false)))\n .subscribe(connected => this.connectedSubject.next(connected)));\n // send heartbeat every n seconds while connected\n this.subscriptions.add(ws.connectionState$\n .pipe(\n // ignore initial DISCONNECTED state\n (0, operators_1.skip)(1), (0, operators_1.switchMap)(cs => (0, rxjs_1.iif)(() => cs === RxWebSocket_1.ConnectionState.CONNECTED, \n // if CONNECTED, start the heartbeat timer\n (0, rxjs_1.timer)(0, HEARTBEAT_INTERVAL))))\n .subscribe(i => \n // first timer event updates lastHeartbeat timestamp\n // subsequent calls send heartbeat message\n i === 0 ? this.updateLastHeartbeat() : this.heartbeat()));\n // handle server's heartbeat responses\n this.subscriptions.add(ws.incomingData$\n .pipe((0, operators_1.filter)(m => m === \"h\"))\n .subscribe(_ => this.updateLastHeartbeat()));\n // handle link status updates\n this.subscriptions.add(ws.incomingJSONData$\n .pipe((0, operators_1.filter)(m => [\"IsLinkedOK\", \"Linked\"].includes(m.type)))\n .subscribe(m => {\n var _a;\n const msg = m;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.LINKED, {\n sessionIdHash: Session_1.Session.hash(sessionId),\n linked: msg.linked,\n type: m.type,\n onlineGuests: msg.onlineGuests,\n });\n this.linkedSubject.next(msg.linked || msg.onlineGuests > 0);\n }));\n // handle session config updates\n this.subscriptions.add(ws.incomingJSONData$\n .pipe((0, operators_1.filter)(m => [\"GetSessionConfigOK\", \"SessionConfigUpdated\"].includes(m.type)))\n .subscribe(m => {\n var _a;\n const msg = m;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.SESSION_CONFIG_RECEIVED, {\n sessionIdHash: Session_1.Session.hash(sessionId),\n metadata_keys: msg && msg.metadata ? Object.keys(msg.metadata) : undefined,\n });\n this.sessionConfigSubject.next({\n webhookId: msg.webhookId,\n webhookUrl: msg.webhookUrl,\n metadata: msg.metadata,\n });\n }));\n }\n /**\n * Make a connection to the server\n */\n connect() {\n var _a;\n if (this.destroyed) {\n throw new Error(\"instance is destroyed\");\n }\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.STARTED_CONNECTING, {\n sessionIdHash: Session_1.Session.hash(this.sessionId),\n });\n this.ws.connect().subscribe();\n }\n /**\n * Terminate connection, and mark as destroyed. To reconnect, create a new\n * instance of WalletSDKConnection\n */\n destroy() {\n var _a;\n this.subscriptions.unsubscribe();\n this.ws.disconnect();\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.DISCONNECTED, {\n sessionIdHash: Session_1.Session.hash(this.sessionId),\n });\n this.destroyed = true;\n }\n get isDestroyed() {\n return this.destroyed;\n }\n /**\n * Emit true if connected and authenticated, else false\n * @returns an Observable\n */\n get connected$() {\n return this.connectedSubject.asObservable();\n }\n /**\n * Emit once connected\n * @returns an Observable\n */\n get onceConnected$() {\n return this.connected$.pipe((0, operators_1.filter)(v => v), (0, operators_1.take)(1), (0, operators_1.map)(() => void 0));\n }\n /**\n * Emit true if linked (a guest has joined before)\n * @returns an Observable\n */\n get linked$() {\n return this.linkedSubject.asObservable();\n }\n /**\n * Emit once when linked\n * @returns an Observable\n */\n get onceLinked$() {\n return this.linked$.pipe((0, operators_1.filter)(v => v), (0, operators_1.take)(1), (0, operators_1.map)(() => void 0));\n }\n /**\n * Emit current session config if available, and subsequent updates\n * @returns an Observable for the session config\n */\n get sessionConfig$() {\n return this.sessionConfigSubject.asObservable();\n }\n /**\n * Emit incoming Event messages\n * @returns an Observable for the messages\n */\n get incomingEvent$() {\n return this.ws.incomingJSONData$.pipe((0, operators_1.filter)(m => {\n if (m.type !== \"Event\") {\n return false;\n }\n const sme = m;\n return (typeof sme.sessionId === \"string\" &&\n typeof sme.eventId === \"string\" &&\n typeof sme.event === \"string\" &&\n typeof sme.data === \"string\");\n }), (0, operators_1.map)(m => m));\n }\n /**\n * Set session metadata in SessionConfig object\n * @param key\n * @param value\n * @returns an Observable that completes when successful\n */\n setSessionMetadata(key, value) {\n const message = (0, ClientMessage_1.ClientMessageSetSessionConfig)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n metadata: { [key]: value },\n });\n return this.onceConnected$.pipe((0, operators_1.flatMap)(_ => this.makeRequest(message)), (0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to set session metadata\");\n }\n }));\n }\n /**\n * Publish an event and emit event ID when successful\n * @param event event name\n * @param data event data\n * @param callWebhook whether the webhook should be invoked\n * @returns an Observable that emits event ID when successful\n */\n publishEvent(event, data, callWebhook = false) {\n const message = (0, ClientMessage_1.ClientMessagePublishEvent)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n event,\n data,\n callWebhook,\n });\n return this.onceLinked$.pipe((0, operators_1.flatMap)(_ => this.makeRequest(message)), (0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to publish event\");\n }\n return res.eventId;\n }));\n }\n sendData(message) {\n this.ws.sendData(JSON.stringify(message));\n }\n updateLastHeartbeat() {\n this.lastHeartbeatResponse = Date.now();\n }\n heartbeat() {\n if (Date.now() - this.lastHeartbeatResponse > HEARTBEAT_INTERVAL * 2) {\n this.ws.disconnect();\n return;\n }\n try {\n this.ws.sendData(\"h\");\n }\n catch (_a) { }\n }\n makeRequest(message, timeout = REQUEST_TIMEOUT) {\n const reqId = message.id;\n try {\n this.sendData(message);\n }\n catch (err) {\n return (0, rxjs_1.throwError)(err);\n }\n // await server message with corresponding id\n return this.ws.incomingJSONData$.pipe((0, operators_1.timeoutWith)(timeout, (0, rxjs_1.throwError)(new Error(`request ${reqId} timed out`))), (0, operators_1.filter)(m => m.id === reqId), (0, operators_1.take)(1));\n }\n authenticate() {\n const msg = (0, ClientMessage_1.ClientMessageHostSession)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n sessionKey: this.sessionKey,\n });\n return this.makeRequest(msg).pipe((0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to authentcate\");\n }\n }));\n }\n sendIsLinked() {\n const msg = (0, ClientMessage_1.ClientMessageIsLinked)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n });\n this.sendData(msg);\n }\n sendGetSessionConfig() {\n const msg = (0, ClientMessage_1.ClientMessageGetSessionConfig)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n });\n this.sendData(msg);\n }\n}\nexports.WalletSDKConnection = WalletSDKConnection;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletProvider = exports.CoinbaseWalletSDK = void 0;\nconst CoinbaseWalletSDK_1 = require(\"./CoinbaseWalletSDK\");\nconst CoinbaseWalletProvider_1 = require(\"./provider/CoinbaseWalletProvider\");\nvar CoinbaseWalletSDK_2 = require(\"./CoinbaseWalletSDK\");\nObject.defineProperty(exports, \"CoinbaseWalletSDK\", { enumerable: true, get: function () { return CoinbaseWalletSDK_2.CoinbaseWalletSDK; } });\nvar CoinbaseWalletProvider_2 = require(\"./provider/CoinbaseWalletProvider\");\nObject.defineProperty(exports, \"CoinbaseWalletProvider\", { enumerable: true, get: function () { return CoinbaseWalletProvider_2.CoinbaseWalletProvider; } });\nexports.default = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\nif (typeof window !== \"undefined\") {\n window.CoinbaseWalletSDK = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\n window.CoinbaseWalletProvider = CoinbaseWalletProvider_1.CoinbaseWalletProvider;\n /**\n * @deprecated Use `window.CoinbaseWalletSDK`\n */\n window.WalletLink = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\n /**\n * @deprecated Use `window.CoinbaseWalletProvider`\n */\n window.WalletLinkProvider = CoinbaseWalletProvider_1.CoinbaseWalletProvider;\n}\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopedLocalStorage = void 0;\nclass ScopedLocalStorage {\n constructor(scope) {\n this.scope = scope;\n }\n setItem(key, value) {\n localStorage.setItem(this.scopedKey(key), value);\n }\n getItem(key) {\n return localStorage.getItem(this.scopedKey(key));\n }\n removeItem(key) {\n localStorage.removeItem(this.scopedKey(key));\n }\n clear() {\n const prefix = this.scopedKey(\"\");\n const keysToRemove = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (typeof key === \"string\" && key.startsWith(prefix)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(key => localStorage.removeItem(key));\n }\n scopedKey(key) {\n return `${this.scope}:${key}`;\n }\n}\nexports.ScopedLocalStorage = ScopedLocalStorage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `@namespace svg \"http://www.w3.org/2000/svg\";.-cbwsdk-css-reset,.-cbwsdk-css-reset *{animation:none;animation-delay:0;animation-direction:normal;animation-duration:0;animation-fill-mode:none;animation-iteration-count:1;animation-name:none;animation-play-state:running;animation-timing-function:ease;backface-visibility:visible;background:0;background-attachment:scroll;background-clip:border-box;background-color:rgba(0,0,0,0);background-image:none;background-origin:padding-box;background-position:0 0;background-position-x:0;background-position-y:0;background-repeat:repeat;background-size:auto auto;border:0;border-style:none;border-width:medium;border-color:inherit;border-bottom:0;border-bottom-color:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-style:none;border-bottom-width:medium;border-collapse:separate;border-image:none;border-left:0;border-left-color:inherit;border-left-style:none;border-left-width:medium;border-radius:0;border-right:0;border-right-color:inherit;border-right-style:none;border-right-width:medium;border-spacing:0;border-top:0;border-top-color:inherit;border-top-left-radius:0;border-top-right-radius:0;border-top-style:none;border-top-width:medium;box-shadow:none;box-sizing:border-box;caption-side:top;clear:none;clip:auto;color:inherit;columns:auto;column-count:auto;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-rule-color:currentColor;column-rule-style:none;column-rule-width:none;column-span:1;column-width:auto;counter-increment:none;counter-reset:none;direction:ltr;empty-cells:show;float:none;font:normal;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;height:auto;hyphens:none;letter-spacing:normal;line-height:normal;list-style:none;list-style-image:none;list-style-position:outside;list-style-type:disc;margin:0;margin-bottom:0;margin-left:0;margin-right:0;margin-top:0;opacity:1;orphans:0;outline:0;outline-color:invert;outline-style:none;outline-width:medium;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;pointer-events:auto;position:static;quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";tab-size:8;table-layout:auto;text-align:inherit;text-align-last:auto;text-decoration:none;text-decoration-color:inherit;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-shadow:none;text-transform:none;transform:none;transform-style:flat;transition:none;transition-delay:0s;transition-duration:0s;transition-property:none;transition-timing-function:ease;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:0;word-spacing:normal;z-index:auto}.-cbwsdk-css-reset strong{font-weight:bold}.-cbwsdk-css-reset *{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;line-height:1}.-cbwsdk-css-reset [class*=container]{margin:0;padding:0}.-cbwsdk-css-reset style{display:none}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectCssReset = void 0;\nconst cssReset_css_1 = __importDefault(require(\"./cssReset-css\"));\nfunction injectCssReset() {\n const styleEl = document.createElement(\"style\");\n styleEl.type = \"text/css\";\n styleEl.appendChild(document.createTextNode(cssReset_css_1.default));\n document.documentElement.appendChild(styleEl);\n}\nexports.injectCssReset = injectCssReset;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletProvider = void 0;\nconst safe_event_emitter_1 = __importDefault(require(\"@metamask/safe-event-emitter\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst DiagnosticLogger_1 = require(\"../connection/DiagnosticLogger\");\nconst Session_1 = require(\"../relay/Session\");\nconst WalletSDKRelayAbstract_1 = require(\"../relay/WalletSDKRelayAbstract\");\nconst util_1 = require(\"../util\");\nconst eth_eip712_util_1 = __importDefault(require(\"../vendor-js/eth-eip712-util\"));\nconst FilterPolyfill_1 = require(\"./FilterPolyfill\");\nconst JSONRPC_1 = require(\"./JSONRPC\");\nconst SubscriptionManager_1 = require(\"./SubscriptionManager\");\nconst DEFAULT_CHAIN_ID_KEY = \"DefaultChainId\";\nconst DEFAULT_JSON_RPC_URL = \"DefaultJsonRpcUrl\";\nclass CoinbaseWalletProvider extends safe_event_emitter_1.default {\n constructor(options) {\n var _a, _b;\n super();\n this._filterPolyfill = new FilterPolyfill_1.FilterPolyfill(this);\n this._subscriptionManager = new SubscriptionManager_1.SubscriptionManager(this);\n this._relay = null;\n this._addresses = [];\n this.hasMadeFirstChainChangedEmission = false;\n this._send = this.send.bind(this);\n this._sendAsync = this.sendAsync.bind(this);\n this.setProviderInfo = this.setProviderInfo.bind(this);\n this.updateProviderInfo = this.updateProviderInfo.bind(this);\n this.getChainId = this.getChainId.bind(this);\n this.setAppInfo = this.setAppInfo.bind(this);\n this.enable = this.enable.bind(this);\n this.close = this.close.bind(this);\n this.send = this.send.bind(this);\n this.sendAsync = this.sendAsync.bind(this);\n this.request = this.request.bind(this);\n this._setAddresses = this._setAddresses.bind(this);\n this.scanQRCode = this.scanQRCode.bind(this);\n this.genericRequest = this.genericRequest.bind(this);\n this._chainIdFromOpts = options.chainId;\n this._jsonRpcUrlFromOpts = options.jsonRpcUrl;\n this._overrideIsMetaMask = options.overrideIsMetaMask;\n this._relayProvider = options.relayProvider;\n this._storage = options.storage;\n this._relayEventManager = options.relayEventManager;\n this.diagnostic = options.diagnosticLogger;\n this.reloadOnDisconnect = true;\n this.isCoinbaseWallet = (_a = options.overrideIsCoinbaseWallet) !== null && _a !== void 0 ? _a : true;\n this.isCoinbaseBrowser = (_b = options.overrideIsCoinbaseBrowser) !== null && _b !== void 0 ? _b : false;\n this.qrUrl = options.qrUrl;\n this.supportsAddressSwitching = options.supportsAddressSwitching;\n this.isLedger = options.isLedger;\n const chainId = this.getChainId();\n const chainIdStr = (0, util_1.prepend0x)(chainId.toString(16));\n // indicate that we've connected, for EIP-1193 compliance\n this.emit(\"connect\", { chainIdStr });\n const cachedAddresses = this._storage.getItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY);\n if (cachedAddresses) {\n const addresses = cachedAddresses.split(\" \");\n if (addresses[0] !== \"\") {\n this._addresses = addresses.map(address => (0, util_1.ensureAddressString)(address));\n this.emit(\"accountsChanged\", addresses);\n }\n }\n this._subscriptionManager.events.on(\"notification\", (notification) => {\n this.emit(\"message\", {\n type: notification.method,\n data: notification.params,\n });\n });\n if (this._addresses.length > 0) {\n void this.initializeRelay();\n }\n window.addEventListener(\"message\", event => {\n var _a;\n // Used to verify the source and window are correct before proceeding\n if (event.origin !== location.origin || event.source !== window) {\n return;\n }\n if (event.data.type !== \"walletLinkMessage\")\n return; // compatibility with CBW extension\n if (event.data.data.action === \"defaultChainChanged\" ||\n event.data.data.action === \"dappChainSwitched\") {\n const _chainId = event.data.data.chainId;\n const jsonRpcUrl = (_a = event.data.data.jsonRpcUrl) !== null && _a !== void 0 ? _a : this.jsonRpcUrl;\n this.updateProviderInfo(jsonRpcUrl, Number(_chainId));\n }\n if (event.data.data.action === \"addressChanged\") {\n this._setAddresses([event.data.data.address]);\n }\n });\n }\n get selectedAddress() {\n return this._addresses[0] || undefined;\n }\n get networkVersion() {\n return this.getChainId().toString(10);\n }\n get chainId() {\n return (0, util_1.prepend0x)(this.getChainId().toString(16));\n }\n get isWalletLink() {\n // backward compatibility\n return true;\n }\n /**\n * Some DApps (i.e. Alpha Homora) seem to require the window.ethereum object return\n * true for this method.\n */\n get isMetaMask() {\n return this._overrideIsMetaMask;\n }\n get host() {\n return this.jsonRpcUrl;\n }\n get connected() {\n return true;\n }\n isConnected() {\n return true;\n }\n get jsonRpcUrl() {\n var _a;\n return ((_a = this._storage.getItem(DEFAULT_JSON_RPC_URL)) !== null && _a !== void 0 ? _a : this._jsonRpcUrlFromOpts);\n }\n set jsonRpcUrl(value) {\n this._storage.setItem(DEFAULT_JSON_RPC_URL, value);\n }\n disableReloadOnDisconnect() {\n this.reloadOnDisconnect = false;\n }\n /**\n * this function is called when coinbase provider is being injected to a dapp\n * standalone + walletlinked extension, ledger, in-app browser using cipher-web-view\n */\n setProviderInfo(jsonRpcUrl, chainId) {\n // extension tend to use the chianId from the dapp, while in-app browser and ledger overrides the default network\n if (!(this.isLedger || this.isCoinbaseBrowser)) {\n this._chainIdFromOpts = chainId;\n this._jsonRpcUrlFromOpts = jsonRpcUrl;\n }\n this.updateProviderInfo(this.jsonRpcUrl, this.getChainId());\n }\n updateProviderInfo(jsonRpcUrl, chainId) {\n this.jsonRpcUrl = jsonRpcUrl;\n // emit chainChanged event if necessary\n const originalChainId = this.getChainId();\n this._storage.setItem(DEFAULT_CHAIN_ID_KEY, chainId.toString(10));\n const chainChanged = (0, util_1.ensureIntNumber)(chainId) !== originalChainId;\n if (chainChanged || !this.hasMadeFirstChainChangedEmission) {\n this.emit(\"chainChanged\", this.getChainId());\n this.hasMadeFirstChainChangedEmission = true;\n }\n }\n async watchAsset(type, address, symbol, decimals, image, chainId) {\n const relay = await this.initializeRelay();\n const result = await relay.watchAsset(type, address, symbol, decimals, image, chainId === null || chainId === void 0 ? void 0 : chainId.toString()).promise;\n return !!result.result;\n }\n async addEthereumChain(chainId, rpcUrls, blockExplorerUrls, chainName, iconUrls, nativeCurrency) {\n var _a, _b;\n if ((0, util_1.ensureIntNumber)(chainId) === this.getChainId()) {\n return false;\n }\n const relay = await this.initializeRelay();\n const isWhitelistedNetworkOrStandalone = relay.inlineAddEthereumChain(chainId.toString());\n if (!this._isAuthorized() && !isWhitelistedNetworkOrStandalone) {\n await relay.requestEthereumAccounts().promise;\n }\n const res = await relay.addEthereumChain(chainId.toString(), rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency).promise;\n if (((_a = res.result) === null || _a === void 0 ? void 0 : _a.isApproved) === true) {\n this.updateProviderInfo(rpcUrls[0], chainId);\n }\n return ((_b = res.result) === null || _b === void 0 ? void 0 : _b.isApproved) === true;\n }\n async switchEthereumChain(chainId) {\n const relay = await this.initializeRelay();\n const res = await relay.switchEthereumChain(chainId.toString(10), this.selectedAddress || undefined).promise;\n if (res.errorCode) {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: res.errorCode,\n });\n }\n const switchResponse = res.result;\n if (switchResponse.isApproved && switchResponse.rpcUrl.length > 0) {\n this.updateProviderInfo(switchResponse.rpcUrl, chainId);\n }\n }\n setAppInfo(appName, appLogoUrl) {\n void this.initializeRelay().then(relay => relay.setAppInfo(appName, appLogoUrl));\n }\n async enable() {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.ETH_ACCOUNTS_STATE, {\n method: \"provider::enable\",\n addresses_length: this._addresses.length,\n sessionIdHash: this._relay\n ? Session_1.Session.hash(this._relay.session.id)\n : undefined,\n });\n if (this._addresses.length > 0) {\n return [...this._addresses];\n }\n return await this._send(JSONRPC_1.JSONRPCMethod.eth_requestAccounts);\n }\n async close() {\n const relay = await this.initializeRelay();\n relay.resetAndReload();\n }\n send(requestOrMethod, callbackOrParams) {\n // send(method, params): Promise\n if (typeof requestOrMethod === \"string\") {\n const method = requestOrMethod;\n const params = Array.isArray(callbackOrParams)\n ? callbackOrParams\n : callbackOrParams !== undefined\n ? [callbackOrParams]\n : [];\n const request = {\n jsonrpc: \"2.0\",\n id: 0,\n method,\n params,\n };\n return this._sendRequestAsync(request).then(res => res.result);\n }\n // send(JSONRPCRequest | JSONRPCRequest[], callback): void\n if (typeof callbackOrParams === \"function\") {\n const request = requestOrMethod;\n const callback = callbackOrParams;\n return this._sendAsync(request, callback);\n }\n // send(JSONRPCRequest[]): JSONRPCResponse[]\n if (Array.isArray(requestOrMethod)) {\n const requests = requestOrMethod;\n return requests.map(r => this._sendRequest(r));\n }\n // send(JSONRPCRequest): JSONRPCResponse\n const req = requestOrMethod;\n return this._sendRequest(req);\n }\n async sendAsync(request, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"callback is required\");\n }\n // send(JSONRPCRequest[], callback): void\n if (Array.isArray(request)) {\n const arrayCb = callback;\n this._sendMultipleRequestsAsync(request)\n .then(responses => arrayCb(null, responses))\n .catch(err => arrayCb(err, null));\n return;\n }\n // send(JSONRPCRequest, callback): void\n const cb = callback;\n return this._sendRequestAsync(request)\n .then(response => cb(null, response))\n .catch(err => cb(err, null));\n }\n async request(args) {\n if (!args || typeof args !== \"object\" || Array.isArray(args)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"Expected a single, non-array, object argument.\",\n data: args,\n });\n }\n const { method, params } = args;\n if (typeof method !== \"string\" || method.length === 0) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"'args.method' must be a non-empty string.\",\n data: args,\n });\n }\n if (params !== undefined &&\n !Array.isArray(params) &&\n (typeof params !== \"object\" || params === null)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"'args.params' must be an object or array if provided.\",\n data: args,\n });\n }\n const newParams = params === undefined ? [] : params;\n // Coinbase Wallet Requests\n const id = this._relayEventManager.makeRequestId();\n const result = await this._sendRequestAsync({\n method,\n params: newParams,\n jsonrpc: \"2.0\",\n id,\n });\n return result.result;\n }\n async scanQRCode(match) {\n const relay = await this.initializeRelay();\n const res = await relay.scanQRCode((0, util_1.ensureRegExpString)(match)).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n async genericRequest(data, action) {\n const relay = await this.initializeRelay();\n const res = await relay.genericRequest(data, action).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n async selectProvider(providerOptions) {\n const relay = await this.initializeRelay();\n const res = await relay.selectProvider(providerOptions).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n supportsSubscriptions() {\n return false;\n }\n subscribe() {\n throw new Error(\"Subscriptions are not supported\");\n }\n unsubscribe() {\n throw new Error(\"Subscriptions are not supported\");\n }\n disconnect() {\n return true;\n }\n _sendRequest(request) {\n const response = {\n jsonrpc: \"2.0\",\n id: request.id,\n };\n const { method } = request;\n response.result = this._handleSynchronousMethods(request);\n if (response.result === undefined) {\n throw new Error(`Coinbase Wallet does not support calling ${method} synchronously without ` +\n `a callback. Please provide a callback parameter to call ${method} ` +\n `asynchronously.`);\n }\n return response;\n }\n _setAddresses(addresses, isDisconnect) {\n if (!Array.isArray(addresses)) {\n throw new Error(\"addresses is not an array\");\n }\n const newAddresses = addresses.map(address => (0, util_1.ensureAddressString)(address));\n if (JSON.stringify(newAddresses) === JSON.stringify(this._addresses)) {\n return;\n }\n if (this._addresses.length > 0 &&\n this.supportsAddressSwitching === false &&\n !isDisconnect) {\n /**\n * The extension currently doesn't support switching selected wallet index\n * make sure walletlink doesn't update it's address in this case\n */\n return;\n }\n this._addresses = newAddresses;\n this.emit(\"accountsChanged\", this._addresses);\n this._storage.setItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY, newAddresses.join(\" \"));\n }\n _sendRequestAsync(request) {\n return new Promise((resolve, reject) => {\n try {\n const syncResult = this._handleSynchronousMethods(request);\n if (syncResult !== undefined) {\n return resolve({\n jsonrpc: \"2.0\",\n id: request.id,\n result: syncResult,\n });\n }\n const filterPromise = this._handleAsynchronousFilterMethods(request);\n if (filterPromise !== undefined) {\n filterPromise\n .then(res => resolve(Object.assign(Object.assign({}, res), { id: request.id })))\n .catch(err => reject(err));\n return;\n }\n const subscriptionPromise = this._handleSubscriptionMethods(request);\n if (subscriptionPromise !== undefined) {\n subscriptionPromise\n .then(res => resolve({\n jsonrpc: \"2.0\",\n id: request.id,\n result: res.result,\n }))\n .catch(err => reject(err));\n return;\n }\n }\n catch (err) {\n return reject(err);\n }\n this._handleAsynchronousMethods(request)\n .then(res => res && resolve(Object.assign(Object.assign({}, res), { id: request.id })))\n .catch(err => reject(err));\n });\n }\n _sendMultipleRequestsAsync(requests) {\n return Promise.all(requests.map(r => this._sendRequestAsync(r)));\n }\n _handleSynchronousMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_accounts:\n return this._eth_accounts();\n case JSONRPC_1.JSONRPCMethod.eth_coinbase:\n return this._eth_coinbase();\n case JSONRPC_1.JSONRPCMethod.eth_uninstallFilter:\n return this._eth_uninstallFilter(params);\n case JSONRPC_1.JSONRPCMethod.net_version:\n return this._net_version();\n case JSONRPC_1.JSONRPCMethod.eth_chainId:\n return this._eth_chainId();\n default:\n return undefined;\n }\n }\n async _handleAsynchronousMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_requestAccounts:\n return this._eth_requestAccounts();\n case JSONRPC_1.JSONRPCMethod.eth_sign:\n return this._eth_sign(params);\n case JSONRPC_1.JSONRPCMethod.eth_ecRecover:\n return this._eth_ecRecover(params);\n case JSONRPC_1.JSONRPCMethod.personal_sign:\n return this._personal_sign(params);\n case JSONRPC_1.JSONRPCMethod.personal_ecRecover:\n return this._personal_ecRecover(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTransaction:\n return this._eth_signTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_sendRawTransaction:\n return this._eth_sendRawTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_sendTransaction:\n return this._eth_sendTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v1:\n return this._eth_signTypedData_v1(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v2:\n return this._throwUnsupportedMethodError();\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v3:\n return this._eth_signTypedData_v3(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v4:\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData:\n return this._eth_signTypedData_v4(params);\n case JSONRPC_1.JSONRPCMethod.cbWallet_arbitrary:\n return this._cbwallet_arbitrary(params);\n case JSONRPC_1.JSONRPCMethod.wallet_addEthereumChain:\n return this._wallet_addEthereumChain(params);\n case JSONRPC_1.JSONRPCMethod.wallet_switchEthereumChain:\n return this._wallet_switchEthereumChain(params);\n case JSONRPC_1.JSONRPCMethod.wallet_watchAsset:\n return this._wallet_watchAsset(params);\n }\n const relay = await this.initializeRelay();\n return relay.makeEthereumJSONRPCRequest(request, this.jsonRpcUrl);\n }\n _handleAsynchronousFilterMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_newFilter:\n return this._eth_newFilter(params);\n case JSONRPC_1.JSONRPCMethod.eth_newBlockFilter:\n return this._eth_newBlockFilter();\n case JSONRPC_1.JSONRPCMethod.eth_newPendingTransactionFilter:\n return this._eth_newPendingTransactionFilter();\n case JSONRPC_1.JSONRPCMethod.eth_getFilterChanges:\n return this._eth_getFilterChanges(params);\n case JSONRPC_1.JSONRPCMethod.eth_getFilterLogs:\n return this._eth_getFilterLogs(params);\n }\n return undefined;\n }\n _handleSubscriptionMethods(request) {\n switch (request.method) {\n case JSONRPC_1.JSONRPCMethod.eth_subscribe:\n case JSONRPC_1.JSONRPCMethod.eth_unsubscribe:\n return this._subscriptionManager.handleRequest(request);\n }\n return undefined;\n }\n _isKnownAddress(addressString) {\n try {\n const addressStr = (0, util_1.ensureAddressString)(addressString);\n const lowercaseAddresses = this._addresses.map(address => (0, util_1.ensureAddressString)(address));\n return lowercaseAddresses.includes(addressStr);\n }\n catch (_a) { }\n return false;\n }\n _ensureKnownAddress(addressString) {\n var _a;\n if (!this._isKnownAddress(addressString)) {\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.UNKNOWN_ADDRESS_ENCOUNTERED);\n throw new Error(\"Unknown Ethereum address\");\n }\n }\n _prepareTransactionParams(tx) {\n const fromAddress = tx.from\n ? (0, util_1.ensureAddressString)(tx.from)\n : this.selectedAddress;\n if (!fromAddress) {\n throw new Error(\"Ethereum address is unavailable\");\n }\n this._ensureKnownAddress(fromAddress);\n const toAddress = tx.to ? (0, util_1.ensureAddressString)(tx.to) : null;\n const weiValue = tx.value != null ? (0, util_1.ensureBN)(tx.value) : new bn_js_1.default(0);\n const data = tx.data ? (0, util_1.ensureBuffer)(tx.data) : Buffer.alloc(0);\n const nonce = tx.nonce != null ? (0, util_1.ensureIntNumber)(tx.nonce) : null;\n const gasPriceInWei = tx.gasPrice != null ? (0, util_1.ensureBN)(tx.gasPrice) : null;\n const maxFeePerGas = tx.maxFeePerGas != null ? (0, util_1.ensureBN)(tx.maxFeePerGas) : null;\n const maxPriorityFeePerGas = tx.maxPriorityFeePerGas != null\n ? (0, util_1.ensureBN)(tx.maxPriorityFeePerGas)\n : null;\n const gasLimit = tx.gas != null ? (0, util_1.ensureBN)(tx.gas) : null;\n const chainId = this.getChainId();\n return {\n fromAddress,\n toAddress,\n weiValue,\n data,\n nonce,\n gasPriceInWei,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasLimit,\n chainId,\n };\n }\n _isAuthorized() {\n return this._addresses.length > 0;\n }\n _requireAuthorization() {\n if (!this._isAuthorized()) {\n throw eth_rpc_errors_1.ethErrors.provider.unauthorized({});\n }\n }\n _throwUnsupportedMethodError() {\n throw eth_rpc_errors_1.ethErrors.provider.unsupportedMethod({});\n }\n async _signEthereumMessage(message, address, addPrefix, typedDataJson) {\n this._ensureKnownAddress(address);\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signEthereumMessage(message, address, addPrefix, typedDataJson).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied message signature\");\n }\n throw err;\n }\n }\n async _ethereumAddressFromSignedMessage(message, signature, addPrefix) {\n const relay = await this.initializeRelay();\n const res = await relay.ethereumAddressFromSignedMessage(message, signature, addPrefix).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n _eth_accounts() {\n return [...this._addresses];\n }\n _eth_coinbase() {\n return this.selectedAddress || null;\n }\n _net_version() {\n return this.getChainId().toString(10);\n }\n _eth_chainId() {\n return (0, util_1.hexStringFromIntNumber)(this.getChainId());\n }\n getChainId() {\n const chainIdStr = this._storage.getItem(DEFAULT_CHAIN_ID_KEY);\n if (!chainIdStr) {\n return (0, util_1.ensureIntNumber)(this._chainIdFromOpts);\n }\n const chainId = parseInt(chainIdStr, 10);\n return (0, util_1.ensureIntNumber)(chainId);\n }\n async _eth_requestAccounts() {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.ETH_ACCOUNTS_STATE, {\n method: \"provider::_eth_requestAccounts\",\n addresses_length: this._addresses.length,\n sessionIdHash: this._relay\n ? Session_1.Session.hash(this._relay.session.id)\n : undefined,\n });\n if (this._addresses.length > 0) {\n return Promise.resolve({\n jsonrpc: \"2.0\",\n id: 0,\n result: this._addresses,\n });\n }\n let res;\n try {\n const relay = await this.initializeRelay();\n res = await relay.requestEthereumAccounts().promise;\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied account authorization\");\n }\n throw err;\n }\n if (!res.result) {\n throw new Error(\"accounts received is empty\");\n }\n this._setAddresses(res.result);\n if (!(this.isLedger || this.isCoinbaseBrowser)) {\n await this.switchEthereumChain(this.getChainId());\n }\n return { jsonrpc: \"2.0\", id: 0, result: this._addresses };\n }\n _eth_sign(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const message = (0, util_1.ensureBuffer)(params[1]);\n return this._signEthereumMessage(message, address, false);\n }\n _eth_ecRecover(params) {\n const message = (0, util_1.ensureBuffer)(params[0]);\n const signature = (0, util_1.ensureBuffer)(params[1]);\n return this._ethereumAddressFromSignedMessage(message, signature, false);\n }\n _personal_sign(params) {\n this._requireAuthorization();\n const message = (0, util_1.ensureBuffer)(params[0]);\n const address = (0, util_1.ensureAddressString)(params[1]);\n return this._signEthereumMessage(message, address, true);\n }\n _personal_ecRecover(params) {\n const message = (0, util_1.ensureBuffer)(params[0]);\n const signature = (0, util_1.ensureBuffer)(params[1]);\n return this._ethereumAddressFromSignedMessage(message, signature, true);\n }\n async _eth_signTransaction(params) {\n this._requireAuthorization();\n const tx = this._prepareTransactionParams(params[0] || {});\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signEthereumTransaction(tx).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied transaction signature\");\n }\n throw err;\n }\n }\n async _eth_sendRawTransaction(params) {\n const signedTransaction = (0, util_1.ensureBuffer)(params[0]);\n const relay = await this.initializeRelay();\n const res = await relay.submitEthereumTransaction(signedTransaction, this.getChainId()).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n async _eth_sendTransaction(params) {\n this._requireAuthorization();\n const tx = this._prepareTransactionParams(params[0] || {});\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signAndSubmitEthereumTransaction(tx).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied transaction signature\");\n }\n throw err;\n }\n }\n async _eth_signTypedData_v1(params) {\n this._requireAuthorization();\n const typedData = (0, util_1.ensureParsedJSONObject)(params[0]);\n const address = (0, util_1.ensureAddressString)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedDataLegacy({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n async _eth_signTypedData_v3(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const typedData = (0, util_1.ensureParsedJSONObject)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedData_v3({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n async _eth_signTypedData_v4(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const typedData = (0, util_1.ensureParsedJSONObject)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedData_v4({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n /** @deprecated */\n async _cbwallet_arbitrary(params) {\n const action = params[0];\n const data = params[1];\n if (typeof data !== \"string\") {\n throw new Error(\"parameter must be a string\");\n }\n if (typeof action !== \"object\" || action === null) {\n throw new Error(\"parameter must be an object\");\n }\n const result = await this.genericRequest(action, data);\n return { jsonrpc: \"2.0\", id: 0, result };\n }\n async _wallet_addEthereumChain(params) {\n var _a, _b, _c, _d;\n const request = params[0];\n if (((_a = request.rpcUrls) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n return {\n jsonrpc: \"2.0\",\n id: 0,\n error: { code: 2, message: `please pass in at least 1 rpcUrl` },\n };\n }\n if (!request.chainName || request.chainName.trim() === \"\") {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: 0,\n message: \"chainName is a required field\",\n });\n }\n if (!request.nativeCurrency) {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: 0,\n message: \"nativeCurrency is a required field\",\n });\n }\n const chainIdNumber = parseInt(request.chainId, 16);\n const success = await this.addEthereumChain(chainIdNumber, (_b = request.rpcUrls) !== null && _b !== void 0 ? _b : [], (_c = request.blockExplorerUrls) !== null && _c !== void 0 ? _c : [], request.chainName, (_d = request.iconUrls) !== null && _d !== void 0 ? _d : [], request.nativeCurrency);\n if (success) {\n return { jsonrpc: \"2.0\", id: 0, result: null };\n }\n else {\n return {\n jsonrpc: \"2.0\",\n id: 0,\n error: { code: 2, message: `unable to add ethereum chain` },\n };\n }\n }\n async _wallet_switchEthereumChain(params) {\n const request = params[0];\n await this.switchEthereumChain(parseInt(request.chainId, 16));\n return { jsonrpc: \"2.0\", id: 0, result: null };\n }\n async _wallet_watchAsset(params) {\n const request = (Array.isArray(params) ? params[0] : params);\n if (!request.type) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Type is required\",\n });\n }\n if ((request === null || request === void 0 ? void 0 : request.type) !== \"ERC20\") {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: `Asset of type '${request.type}' is not supported`,\n });\n }\n if (!(request === null || request === void 0 ? void 0 : request.options)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Options are required\",\n });\n }\n if (!(request === null || request === void 0 ? void 0 : request.options.address)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Address is required\",\n });\n }\n const chainId = this.getChainId();\n const { address, symbol, image, decimals } = request.options;\n const res = await this.watchAsset(request.type, address, symbol, decimals, image, chainId);\n return { jsonrpc: \"2.0\", id: 0, result: res };\n }\n _eth_uninstallFilter(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.uninstallFilter(filterId);\n }\n async _eth_newFilter(params) {\n const param = params[0];\n const filterId = await this._filterPolyfill.newFilter(param);\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n async _eth_newBlockFilter() {\n const filterId = await this._filterPolyfill.newBlockFilter();\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n async _eth_newPendingTransactionFilter() {\n const filterId = await this._filterPolyfill.newPendingTransactionFilter();\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n _eth_getFilterChanges(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.getFilterChanges(filterId);\n }\n _eth_getFilterLogs(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.getFilterLogs(filterId);\n }\n initializeRelay() {\n if (this._relay) {\n return Promise.resolve(this._relay);\n }\n return this._relayProvider().then(relay => {\n relay.setAccountsCallback((accounts, isDisconnect) => this._setAddresses(accounts, isDisconnect));\n relay.setChainCallback((chainId, jsonRpcUrl) => {\n this.updateProviderInfo(jsonRpcUrl, parseInt(chainId, 10));\n });\n relay.setDappDefaultChainCallback(this._chainIdFromOpts);\n this._relay = relay;\n return relay;\n });\n }\n}\nexports.CoinbaseWalletProvider = CoinbaseWalletProvider;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterFromParam = exports.FilterPolyfill = void 0;\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst TIMEOUT = 5 * 60 * 1000; // 5 minutes\nconst JSONRPC_TEMPLATE = {\n jsonrpc: \"2.0\",\n id: 0,\n};\nclass FilterPolyfill {\n constructor(provider) {\n this.logFilters = new Map(); // \n this.blockFilters = new Set(); // \n this.pendingTransactionFilters = new Set(); // \n this.cursors = new Map(); // \n this.timeouts = new Map(); // \n this.nextFilterId = (0, types_1.IntNumber)(1);\n this.provider = provider;\n }\n async newFilter(param) {\n const filter = filterFromParam(param);\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, filter.fromBlock);\n console.log(`Installing new log filter(${id}):`, filter, \"initial cursor position:\", cursor);\n this.logFilters.set(id, filter);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n async newBlockFilter() {\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, \"latest\");\n console.log(`Installing new block filter (${id}) with initial cursor position:`, cursor);\n this.blockFilters.add(id);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n async newPendingTransactionFilter() {\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, \"latest\");\n console.log(`Installing new block filter (${id}) with initial cursor position:`, cursor);\n this.pendingTransactionFilters.add(id);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n uninstallFilter(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n console.log(`Uninstalling filter (${id})`);\n this.deleteFilter(id);\n return true;\n }\n getFilterChanges(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n if (this.timeouts.has(id)) {\n // extend timeout\n this.setFilterTimeout(id);\n }\n if (this.logFilters.has(id)) {\n return this.getLogFilterChanges(id);\n }\n else if (this.blockFilters.has(id)) {\n return this.getBlockFilterChanges(id);\n }\n else if (this.pendingTransactionFilters.has(id)) {\n return this.getPendingTransactionFilterChanges(id);\n }\n return Promise.resolve(filterNotFoundError());\n }\n async getFilterLogs(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n const filter = this.logFilters.get(id);\n if (!filter) {\n return filterNotFoundError();\n }\n return this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getLogs\", params: [paramFromFilter(filter)] }));\n }\n makeFilterId() {\n return (0, types_1.IntNumber)(++this.nextFilterId);\n }\n sendAsyncPromise(request) {\n return new Promise((resolve, reject) => {\n this.provider.sendAsync(request, (err, response) => {\n if (err) {\n return reject(err);\n }\n if (Array.isArray(response) || response == null) {\n return reject(new Error(`unexpected response received: ${JSON.stringify(response)}`));\n }\n resolve(response);\n });\n });\n }\n deleteFilter(id) {\n console.log(`Deleting filter (${id})`);\n this.logFilters.delete(id);\n this.blockFilters.delete(id);\n this.pendingTransactionFilters.delete(id);\n this.cursors.delete(id);\n this.timeouts.delete(id);\n }\n async getLogFilterChanges(id) {\n const filter = this.logFilters.get(id);\n const cursorPosition = this.cursors.get(id);\n if (!cursorPosition || !filter) {\n return filterNotFoundError();\n }\n const currentBlockHeight = await this.getCurrentBlockHeight();\n const toBlock = filter.toBlock === \"latest\" ? currentBlockHeight : filter.toBlock;\n if (cursorPosition > currentBlockHeight) {\n return emptyResult();\n }\n if (cursorPosition > filter.toBlock) {\n return emptyResult();\n }\n console.log(`Fetching logs from ${cursorPosition} to ${toBlock} for filter ${id}`);\n const response = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getLogs\", params: [\n paramFromFilter(Object.assign(Object.assign({}, filter), { fromBlock: cursorPosition, toBlock })),\n ] }));\n if (Array.isArray(response.result)) {\n const blocks = response.result.map(log => (0, util_1.intNumberFromHexString)(log.blockNumber || \"0x0\"));\n const highestBlock = Math.max(...blocks);\n if (highestBlock && highestBlock > cursorPosition) {\n const newCursorPosition = (0, types_1.IntNumber)(highestBlock + 1);\n console.log(`Moving cursor position for filter (${id}) from ${cursorPosition} to ${newCursorPosition}`);\n this.cursors.set(id, newCursorPosition);\n }\n }\n return response;\n }\n async getBlockFilterChanges(id) {\n const cursorPosition = this.cursors.get(id);\n if (!cursorPosition) {\n return filterNotFoundError();\n }\n const currentBlockHeight = await this.getCurrentBlockHeight();\n if (cursorPosition > currentBlockHeight) {\n return emptyResult();\n }\n console.log(`Fetching blocks from ${cursorPosition} to ${currentBlockHeight} for filter (${id})`);\n const blocks = (await Promise.all(\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (0, util_1.range)(cursorPosition, currentBlockHeight + 1).map(i => this.getBlockHashByNumber((0, types_1.IntNumber)(i))))).filter(hash => !!hash);\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const newCursorPosition = (0, types_1.IntNumber)(cursorPosition + blocks.length);\n console.log(`Moving cursor position for filter (${id}) from ${cursorPosition} to ${newCursorPosition}`);\n this.cursors.set(id, newCursorPosition);\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { result: blocks });\n }\n async getPendingTransactionFilterChanges(_id) {\n // pending transaction filters are not supported\n return Promise.resolve(emptyResult());\n }\n async setInitialCursorPosition(id, startBlock) {\n const currentBlockHeight = await this.getCurrentBlockHeight();\n const initialCursorPosition = typeof startBlock === \"number\" && startBlock > currentBlockHeight\n ? startBlock\n : currentBlockHeight;\n this.cursors.set(id, initialCursorPosition);\n return initialCursorPosition;\n }\n setFilterTimeout(id) {\n const existing = this.timeouts.get(id);\n if (existing) {\n window.clearTimeout(existing);\n }\n const timeout = window.setTimeout(() => {\n console.log(`Filter (${id}) timed out`);\n this.deleteFilter(id);\n }, TIMEOUT);\n this.timeouts.set(id, timeout);\n }\n async getCurrentBlockHeight() {\n const { result } = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_blockNumber\", params: [] }));\n return (0, util_1.intNumberFromHexString)((0, util_1.ensureHexString)(result));\n }\n async getBlockHashByNumber(blockNumber) {\n const response = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getBlockByNumber\", params: [(0, util_1.hexStringFromIntNumber)(blockNumber), false] }));\n if (response.result && typeof response.result.hash === \"string\") {\n return (0, util_1.ensureHexString)(response.result.hash);\n }\n return null;\n }\n}\nexports.FilterPolyfill = FilterPolyfill;\nfunction filterFromParam(param) {\n return {\n fromBlock: intBlockHeightFromHexBlockHeight(param.fromBlock),\n toBlock: intBlockHeightFromHexBlockHeight(param.toBlock),\n addresses: param.address === undefined\n ? null\n : Array.isArray(param.address)\n ? param.address\n : [param.address],\n topics: param.topics || [],\n };\n}\nexports.filterFromParam = filterFromParam;\nfunction paramFromFilter(filter) {\n const param = {\n fromBlock: hexBlockHeightFromIntBlockHeight(filter.fromBlock),\n toBlock: hexBlockHeightFromIntBlockHeight(filter.toBlock),\n topics: filter.topics,\n };\n if (filter.addresses !== null) {\n param.address = filter.addresses;\n }\n return param;\n}\nfunction intBlockHeightFromHexBlockHeight(value) {\n if (value === undefined || value === \"latest\" || value === \"pending\") {\n return \"latest\";\n }\n else if (value === \"earliest\") {\n return (0, types_1.IntNumber)(0);\n }\n else if ((0, util_1.isHexString)(value)) {\n return (0, util_1.intNumberFromHexString)(value);\n }\n throw new Error(`Invalid block option: ${String(value)}`);\n}\nfunction hexBlockHeightFromIntBlockHeight(value) {\n if (value === \"latest\") {\n return value;\n }\n return (0, util_1.hexStringFromIntNumber)(value);\n}\nfunction filterNotFoundError() {\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { error: { code: -32000, message: \"filter not found\" } });\n}\nfunction emptyResult() {\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { result: [] });\n}\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCMethod = void 0;\nvar JSONRPCMethod;\n(function (JSONRPCMethod) {\n // synchronous or asynchronous\n JSONRPCMethod[\"eth_accounts\"] = \"eth_accounts\";\n JSONRPCMethod[\"eth_coinbase\"] = \"eth_coinbase\";\n JSONRPCMethod[\"net_version\"] = \"net_version\";\n JSONRPCMethod[\"eth_chainId\"] = \"eth_chainId\";\n JSONRPCMethod[\"eth_uninstallFilter\"] = \"eth_uninstallFilter\";\n // asynchronous only\n JSONRPCMethod[\"eth_requestAccounts\"] = \"eth_requestAccounts\";\n JSONRPCMethod[\"eth_sign\"] = \"eth_sign\";\n JSONRPCMethod[\"eth_ecRecover\"] = \"eth_ecRecover\";\n JSONRPCMethod[\"personal_sign\"] = \"personal_sign\";\n JSONRPCMethod[\"personal_ecRecover\"] = \"personal_ecRecover\";\n JSONRPCMethod[\"eth_signTransaction\"] = \"eth_signTransaction\";\n JSONRPCMethod[\"eth_sendRawTransaction\"] = \"eth_sendRawTransaction\";\n JSONRPCMethod[\"eth_sendTransaction\"] = \"eth_sendTransaction\";\n JSONRPCMethod[\"eth_signTypedData_v1\"] = \"eth_signTypedData_v1\";\n JSONRPCMethod[\"eth_signTypedData_v2\"] = \"eth_signTypedData_v2\";\n JSONRPCMethod[\"eth_signTypedData_v3\"] = \"eth_signTypedData_v3\";\n JSONRPCMethod[\"eth_signTypedData_v4\"] = \"eth_signTypedData_v4\";\n JSONRPCMethod[\"eth_signTypedData\"] = \"eth_signTypedData\";\n JSONRPCMethod[\"cbWallet_arbitrary\"] = \"walletlink_arbitrary\";\n JSONRPCMethod[\"wallet_addEthereumChain\"] = \"wallet_addEthereumChain\";\n JSONRPCMethod[\"wallet_switchEthereumChain\"] = \"wallet_switchEthereumChain\";\n JSONRPCMethod[\"wallet_watchAsset\"] = \"wallet_watchAsset\";\n // asynchronous pub/sub\n JSONRPCMethod[\"eth_subscribe\"] = \"eth_subscribe\";\n JSONRPCMethod[\"eth_unsubscribe\"] = \"eth_unsubscribe\";\n // asynchronous filter methods\n JSONRPCMethod[\"eth_newFilter\"] = \"eth_newFilter\";\n JSONRPCMethod[\"eth_newBlockFilter\"] = \"eth_newBlockFilter\";\n JSONRPCMethod[\"eth_newPendingTransactionFilter\"] = \"eth_newPendingTransactionFilter\";\n JSONRPCMethod[\"eth_getFilterChanges\"] = \"eth_getFilterChanges\";\n JSONRPCMethod[\"eth_getFilterLogs\"] = \"eth_getFilterLogs\";\n})(JSONRPCMethod = exports.JSONRPCMethod || (exports.JSONRPCMethod = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionManager = void 0;\nconst PollingBlockTracker = require(\"eth-block-tracker\");\nconst createSubscriptionManager = require(\"eth-json-rpc-filters/subscriptionManager\");\nconst noop = () => { };\nclass SubscriptionManager {\n constructor(provider) {\n const blockTracker = new PollingBlockTracker({\n provider,\n pollingInterval: 15 * 1000,\n setSkipCacheFlag: true,\n });\n const { events, middleware } = createSubscriptionManager({\n blockTracker,\n provider,\n });\n this.events = events;\n this.subscriptionMiddleware = middleware;\n }\n async handleRequest(request) {\n const result = {};\n await this.subscriptionMiddleware(request, result, noop, noop);\n return result;\n }\n destroy() {\n this.subscriptionMiddleware.destroy();\n }\n}\nexports.SubscriptionManager = SubscriptionManager;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKUI = void 0;\nconst LinkFlow_1 = require(\"../components/LinkFlow/LinkFlow\");\nconst Snackbar_1 = require(\"../components/Snackbar/Snackbar\");\nconst cssReset_1 = require(\"../lib/cssReset\");\nclass WalletSDKUI {\n constructor(options) {\n this.standalone = null;\n this.attached = false;\n this.appSrc = null;\n this.snackbar = new Snackbar_1.Snackbar({\n darkMode: options.darkMode,\n });\n this.linkFlow = new LinkFlow_1.LinkFlow({\n darkMode: options.darkMode,\n version: options.version,\n sessionId: options.session.id,\n sessionSecret: options.session.secret,\n linkAPIUrl: options.linkAPIUrl,\n connected$: options.connected$,\n chainId$: options.chainId$,\n isParentConnection: false,\n });\n }\n attach() {\n if (this.attached) {\n throw new Error(\"Coinbase Wallet SDK UI is already attached\");\n }\n const el = document.documentElement;\n const container = document.createElement(\"div\");\n container.className = \"-cbwsdk-css-reset\";\n el.appendChild(container);\n this.linkFlow.attach(container);\n this.snackbar.attach(container);\n this.attached = true;\n (0, cssReset_1.injectCssReset)();\n }\n setConnectDisabled(connectDisabled) {\n this.linkFlow.setConnectDisabled(connectDisabled);\n }\n /* istanbul ignore next */\n addEthereumChain(_options) {\n // no-op\n }\n /* istanbul ignore next */\n watchAsset(_options) {\n // no-op\n }\n /* istanbul ignore next */\n switchEthereumChain(_options) {\n // no-op\n }\n requestEthereumAccounts(options) {\n this.linkFlow.open({ onCancel: options.onCancel });\n }\n hideRequestEthereumAccounts() {\n this.linkFlow.close();\n }\n /* istanbul ignore next */\n signEthereumMessage(_) {\n // No-op\n }\n /* istanbul ignore next */\n signEthereumTransaction(_) {\n // No-op\n }\n /* istanbul ignore next */\n submitEthereumTransaction(_) {\n // No-op\n }\n /* istanbul ignore next */\n ethereumAddressFromSignedMessage(_) {\n // No-op\n }\n showConnecting(options) {\n let snackbarProps;\n if (options.isUnlinkedErrorState) {\n snackbarProps = {\n autoExpand: true,\n message: \"Connection lost\",\n appSrc: this.appSrc,\n menuItems: [\n {\n isRed: false,\n info: \"Reset connection\",\n svgWidth: \"10\",\n svgHeight: \"11\",\n path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n defaultFillRule: \"evenodd\",\n defaultClipRule: \"evenodd\",\n onClick: options.onResetConnection,\n },\n ],\n };\n }\n else {\n snackbarProps = {\n message: \"Confirm on phone\",\n appSrc: this.appSrc,\n menuItems: [\n {\n isRed: true,\n info: \"Cancel transaction\",\n svgWidth: \"11\",\n svgHeight: \"11\",\n path: \"M10.3711 1.52346L9.21775 0.370117L5.37109 4.21022L1.52444 0.370117L0.371094 1.52346L4.2112 5.37012L0.371094 9.21677L1.52444 10.3701L5.37109 6.53001L9.21775 10.3701L10.3711 9.21677L6.53099 5.37012L10.3711 1.52346Z\",\n defaultFillRule: \"inherit\",\n defaultClipRule: \"inherit\",\n onClick: options.onCancel,\n },\n {\n isRed: false,\n info: \"Reset connection\",\n svgWidth: \"10\",\n svgHeight: \"11\",\n path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n defaultFillRule: \"evenodd\",\n defaultClipRule: \"evenodd\",\n onClick: options.onResetConnection,\n },\n ],\n };\n }\n return this.snackbar.presentItem(snackbarProps);\n }\n /* istanbul ignore next */\n setAppSrc(appSrc) {\n this.appSrc = appSrc;\n }\n /* istanbul ignore next */\n reloadUI() {\n document.location.reload();\n }\n /* istanbul ignore next */\n inlineAccountsResponse() {\n return false;\n }\n /* istanbul ignore next */\n inlineAddEthereumChain(_chainId) {\n return false;\n }\n /* istanbul ignore next */\n inlineWatchAsset() {\n return false;\n }\n /* istanbul ignore next */\n inlineSwitchEthereumChain() {\n return false;\n }\n /* istanbul ignore next */\n setStandalone(status) {\n this.standalone = status;\n }\n /* istanbul ignore next */\n isStandalone() {\n var _a;\n return (_a = this.standalone) !== null && _a !== void 0 ? _a : false;\n }\n}\nexports.WalletSDKUI = WalletSDKUI;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletUIError = void 0;\nclass WalletUIError extends Error {\n constructor(message, errorCode) {\n super(message);\n this.message = message;\n this.errorCode = errorCode;\n }\n}\nexports.WalletUIError = WalletUIError;\nWalletUIError.UserRejectedRequest = new WalletUIError(\"User rejected request\");\nWalletUIError.SwitchEthereumChainUnsupportedChainId = new WalletUIError(\"Unsupported chainId\", 4902);\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelayMessageType = void 0;\nvar RelayMessageType;\n(function (RelayMessageType) {\n RelayMessageType[\"SESSION_ID_REQUEST\"] = \"SESSION_ID_REQUEST\";\n RelayMessageType[\"SESSION_ID_RESPONSE\"] = \"SESSION_ID_RESPONSE\";\n RelayMessageType[\"LINKED\"] = \"LINKED\";\n RelayMessageType[\"UNLINKED\"] = \"UNLINKED\";\n RelayMessageType[\"WEB3_REQUEST\"] = \"WEB3_REQUEST\";\n RelayMessageType[\"WEB3_REQUEST_CANCELED\"] = \"WEB3_REQUEST_CANCELED\";\n RelayMessageType[\"WEB3_RESPONSE\"] = \"WEB3_RESPONSE\";\n})(RelayMessageType = exports.RelayMessageType || (exports.RelayMessageType = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Session = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst sha_js_1 = require(\"sha.js\");\nconst util_1 = require(\"../util\");\nconst STORAGE_KEY_SESSION_ID = \"session:id\";\nconst STORAGE_KEY_SESSION_SECRET = \"session:secret\";\nconst STORAGE_KEY_SESSION_LINKED = \"session:linked\";\nclass Session {\n constructor(storage, id, secret, linked) {\n this._storage = storage;\n this._id = id || (0, util_1.randomBytesHex)(16);\n this._secret = secret || (0, util_1.randomBytesHex)(32);\n this._key = new sha_js_1.sha256()\n .update(`${this._id}, ${this._secret} WalletLink`) // ensure old sessions stay connected\n .digest(\"hex\");\n this._linked = !!linked;\n }\n static load(storage) {\n const id = storage.getItem(STORAGE_KEY_SESSION_ID);\n const linked = storage.getItem(STORAGE_KEY_SESSION_LINKED);\n const secret = storage.getItem(STORAGE_KEY_SESSION_SECRET);\n if (id && secret) {\n return new Session(storage, id, secret, linked === \"1\");\n }\n return null;\n }\n static get persistedSessionIdChange$() {\n return (0, rxjs_1.fromEvent)(window, \"storage\").pipe((0, operators_1.filter)(evt => evt.key === STORAGE_KEY_SESSION_ID), (0, operators_1.map)(evt => ({\n oldValue: evt.oldValue || null,\n newValue: evt.newValue || null,\n })));\n }\n /**\n * Takes in a session ID and returns the sha256 hash of it.\n * @param sessionId session ID\n */\n static hash(sessionId) {\n return new sha_js_1.sha256().update(sessionId).digest(\"hex\");\n }\n get id() {\n return this._id;\n }\n get secret() {\n return this._secret;\n }\n get key() {\n return this._key;\n }\n get linked() {\n return this._linked;\n }\n set linked(val) {\n this._linked = val;\n this.persistLinked();\n }\n save() {\n this._storage.setItem(STORAGE_KEY_SESSION_ID, this._id);\n this._storage.setItem(STORAGE_KEY_SESSION_SECRET, this._secret);\n this.persistLinked();\n return this;\n }\n persistLinked() {\n this._storage.setItem(STORAGE_KEY_SESSION_LINKED, this._linked ? \"1\" : \"0\");\n }\n}\nexports.Session = Session;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelay = void 0;\nconst bind_decorator_1 = __importDefault(require(\"bind-decorator\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst DiagnosticLogger_1 = require(\"../connection/DiagnosticLogger\");\nconst WalletSDKConnection_1 = require(\"../connection/WalletSDKConnection\");\nconst WalletUIError_1 = require(\"../provider/WalletUIError\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst aes256gcm = __importStar(require(\"./aes256gcm\"));\nconst Session_1 = require(\"./Session\");\nconst WalletSDKRelayAbstract_1 = require(\"./WalletSDKRelayAbstract\");\nconst Web3Method_1 = require(\"./Web3Method\");\nconst Web3RequestCanceledMessage_1 = require(\"./Web3RequestCanceledMessage\");\nconst Web3RequestMessage_1 = require(\"./Web3RequestMessage\");\nconst Web3Response_1 = require(\"./Web3Response\");\nconst Web3ResponseMessage_1 = require(\"./Web3ResponseMessage\");\nclass WalletSDKRelay extends WalletSDKRelayAbstract_1.WalletSDKRelayAbstract {\n constructor(options) {\n var _a;\n super();\n this.accountsCallback = null;\n this.chainCallback = null;\n this.dappDefaultChainSubject = new rxjs_1.BehaviorSubject(1);\n this.dappDefaultChain = 1;\n this.appName = \"\";\n this.appLogoUrl = null;\n this.subscriptions = new rxjs_1.Subscription();\n this.linkAPIUrl = options.linkAPIUrl;\n this.storage = options.storage;\n this.options = options;\n const { session, ui, connection } = this.subscribe();\n this._session = session;\n this.connection = connection;\n this.relayEventManager = options.relayEventManager;\n if (options.diagnosticLogger && options.eventListener) {\n throw new Error(\"Can't have both eventListener and diagnosticLogger options, use only diagnosticLogger\");\n }\n if (options.eventListener) {\n this.diagnostic = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n log: options.eventListener.onEvent,\n };\n }\n else {\n this.diagnostic = options.diagnosticLogger;\n }\n this._reloadOnDisconnect = (_a = options.reloadOnDisconnect) !== null && _a !== void 0 ? _a : true;\n this.ui = ui;\n }\n subscribe() {\n this.subscriptions.add(this.dappDefaultChainSubject.subscribe(chainId => {\n if (this.dappDefaultChain !== chainId) {\n this.dappDefaultChain = chainId;\n }\n }));\n const session = Session_1.Session.load(this.storage) || new Session_1.Session(this.storage).save();\n const connection = new WalletSDKConnection_1.WalletSDKConnection(session.id, session.key, this.linkAPIUrl, this.diagnostic);\n this.subscriptions.add(connection.sessionConfig$.subscribe({\n next: sessionConfig => {\n this.onSessionConfigChanged(sessionConfig);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"error while invoking session config callback\",\n });\n },\n }));\n this.subscriptions.add(connection.incomingEvent$\n .pipe((0, operators_1.filter)(m => m.event === \"Web3Response\"))\n .subscribe({ next: this.handleIncomingEvent }));\n this.subscriptions.add(connection.linked$\n .pipe((0, operators_1.skip)(1), (0, operators_1.tap)((linked) => {\n var _a;\n this.isLinked = linked;\n const cachedAddresses = this.storage.getItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY);\n if (linked) {\n // Only set linked session variable one way\n this.session.linked = linked;\n }\n this.isUnlinkedErrorState = false;\n if (cachedAddresses) {\n const addresses = cachedAddresses.split(\" \");\n const wasConnectedViaStandalone = this.storage.getItem(\"IsStandaloneSigning\") === \"true\";\n if (addresses[0] !== \"\" &&\n !linked &&\n this.session.linked &&\n !wasConnectedViaStandalone) {\n this.isUnlinkedErrorState = true;\n const sessionIdHash = this.getSessionIdHash();\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.UNLINKED_ERROR_STATE, {\n sessionIdHash,\n });\n }\n }\n }))\n .subscribe());\n // if session is marked destroyed, reset and reload\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => !!c.metadata && c.metadata.__destroyed === \"1\"))\n .subscribe(() => {\n var _a;\n const alreadyDestroyed = connection.isDestroyed;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.METADATA_DESTROYED, {\n alreadyDestroyed,\n sessionIdHash: this.getSessionIdHash(),\n });\n return this.resetAndReload();\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.WalletUsername !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.WalletUsername, session.secret)))\n .subscribe({\n next: walletUsername => {\n this.storage.setItem(WalletSDKRelayAbstract_1.WALLET_USER_NAME_KEY, walletUsername);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"username\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.AppVersion !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.AppVersion, session.secret)))\n .subscribe({\n next: appVersion => {\n this.storage.setItem(WalletSDKRelayAbstract_1.APP_VERSION_KEY, appVersion);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"appversion\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata &&\n c.metadata.ChainId !== undefined &&\n c.metadata.JsonRpcUrl !== undefined))\n .pipe((0, operators_1.mergeMap)(c => (0, rxjs_1.zip)(aes256gcm.decrypt(c.metadata.ChainId, session.secret), aes256gcm.decrypt(c.metadata.JsonRpcUrl, session.secret))))\n .pipe((0, operators_1.distinctUntilChanged)())\n .subscribe({\n next: ([chainId, jsonRpcUrl]) => {\n if (this.chainCallback) {\n this.chainCallback(chainId, jsonRpcUrl);\n }\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"chainId|jsonRpcUrl\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.EthereumAddress !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.EthereumAddress, session.secret)))\n .subscribe({\n next: selectedAddress => {\n if (this.accountsCallback) {\n this.accountsCallback([selectedAddress]);\n }\n if (WalletSDKRelay.accountRequestCallbackIds.size > 0) {\n // We get the ethereum address from the metadata. If for whatever\n // reason we don't get a response via an explicit web3 message\n // we can still fulfill the eip1102 request.\n Array.from(WalletSDKRelay.accountRequestCallbackIds.values()).forEach(id => {\n const message = (0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.RequestEthereumAccountsResponse)([\n selectedAddress,\n ]),\n });\n this.invokeCallback(Object.assign(Object.assign({}, message), { id }));\n });\n WalletSDKRelay.accountRequestCallbackIds.clear();\n }\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"selectedAddress\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.AppSrc !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.AppSrc, session.secret)))\n .subscribe({\n next: appSrc => {\n this.ui.setAppSrc(appSrc);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"appSrc\",\n });\n },\n }));\n const ui = this.options.uiConstructor({\n linkAPIUrl: this.options.linkAPIUrl,\n version: this.options.version,\n darkMode: this.options.darkMode,\n session,\n connected$: connection.connected$,\n chainId$: this.dappDefaultChainSubject,\n });\n connection.connect();\n return { session, ui, connection };\n }\n attachUI() {\n this.ui.attach();\n }\n resetAndReload() {\n this.connection\n .setSessionMetadata(\"__destroyed\", \"1\")\n .pipe((0, operators_1.timeout)(1000), (0, operators_1.catchError)(_ => (0, rxjs_1.of)(null)))\n .subscribe(_ => {\n var _a, _b, _c;\n const isStandalone = this.ui.isStandalone();\n try {\n this.subscriptions.unsubscribe();\n }\n catch (err) {\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error unsubscribing\",\n });\n }\n (_b = this.diagnostic) === null || _b === void 0 ? void 0 : _b.log(DiagnosticLogger_1.EVENTS.SESSION_STATE_CHANGE, {\n method: \"relay::resetAndReload\",\n sessionMetadataChange: \"__destroyed, 1\",\n sessionIdHash: this.getSessionIdHash(),\n });\n this.connection.destroy();\n /**\n * Only clear storage if the session id we have in memory matches the one on disk\n * Otherwise, in the case where we have 2 tabs, another tab might have cleared\n * storage already. In that case if we clear storage again, the user will be in\n * a state where the first tab allows the user to connect but the session that\n * was used isn't persisted. This leaves the user in a state where they aren't\n * connected to the mobile app.\n */\n const storedSession = Session_1.Session.load(this.storage);\n if ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) === this._session.id) {\n this.storage.clear();\n }\n else if (storedSession) {\n (_c = this.diagnostic) === null || _c === void 0 ? void 0 : _c.log(DiagnosticLogger_1.EVENTS.SKIPPED_CLEARING_SESSION, {\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: Session_1.Session.hash(storedSession.id),\n });\n }\n if (this._reloadOnDisconnect) {\n this.ui.reloadUI();\n return;\n }\n if (this.accountsCallback) {\n this.accountsCallback([], true);\n }\n const { session, ui, connection } = this.subscribe();\n this._session = session;\n this.connection = connection;\n this.ui = ui;\n if (isStandalone && this.ui.setStandalone)\n this.ui.setStandalone(true);\n this.attachUI();\n }, (err) => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.FAILURE, {\n method: \"relay::resetAndReload\",\n message: `failed to reset and reload with ${err}`,\n sessionIdHash: this.getSessionIdHash(),\n });\n });\n }\n setAppInfo(appName, appLogoUrl) {\n this.appName = appName;\n this.appLogoUrl = appLogoUrl;\n }\n getStorageItem(key) {\n return this.storage.getItem(key);\n }\n get session() {\n return this._session;\n }\n setStorageItem(key, value) {\n this.storage.setItem(key, value);\n }\n signEthereumMessage(message, address, addPrefix, typedDataJson) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumMessage,\n params: {\n message: (0, util_1.hexStringFromBuffer)(message, true),\n address,\n addPrefix,\n typedDataJson: typedDataJson || null,\n },\n });\n }\n ethereumAddressFromSignedMessage(message, signature, addPrefix) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.ethereumAddressFromSignedMessage,\n params: {\n message: (0, util_1.hexStringFromBuffer)(message, true),\n signature: (0, util_1.hexStringFromBuffer)(signature, true),\n addPrefix,\n },\n });\n }\n signEthereumTransaction(params) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumTransaction,\n params: {\n fromAddress: params.fromAddress,\n toAddress: params.toAddress,\n weiValue: (0, util_1.bigIntStringFromBN)(params.weiValue),\n data: (0, util_1.hexStringFromBuffer)(params.data, true),\n nonce: params.nonce,\n gasPriceInWei: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxFeePerGas: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxPriorityFeePerGas: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n gasLimit: params.gasLimit ? (0, util_1.bigIntStringFromBN)(params.gasLimit) : null,\n chainId: params.chainId,\n shouldSubmit: false,\n },\n });\n }\n signAndSubmitEthereumTransaction(params) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumTransaction,\n params: {\n fromAddress: params.fromAddress,\n toAddress: params.toAddress,\n weiValue: (0, util_1.bigIntStringFromBN)(params.weiValue),\n data: (0, util_1.hexStringFromBuffer)(params.data, true),\n nonce: params.nonce,\n gasPriceInWei: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxFeePerGas: params.maxFeePerGas\n ? (0, util_1.bigIntStringFromBN)(params.maxFeePerGas)\n : null,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas\n ? (0, util_1.bigIntStringFromBN)(params.maxPriorityFeePerGas)\n : null,\n gasLimit: params.gasLimit ? (0, util_1.bigIntStringFromBN)(params.gasLimit) : null,\n chainId: params.chainId,\n shouldSubmit: true,\n },\n });\n }\n submitEthereumTransaction(signedTransaction, chainId) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.submitEthereumTransaction,\n params: {\n signedTransaction: (0, util_1.hexStringFromBuffer)(signedTransaction, true),\n chainId,\n },\n });\n }\n scanQRCode(regExp) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.scanQRCode,\n params: { regExp },\n });\n }\n getQRCodeUrl() {\n return (0, util_1.createQrUrl)(this._session.id, this._session.secret, this.linkAPIUrl, false, this.options.version, this.dappDefaultChain);\n }\n genericRequest(data, action) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.generic,\n params: {\n action,\n data,\n },\n });\n }\n sendGenericMessage(request) {\n return this.sendRequest(request);\n }\n sendRequest(request) {\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n const promise = new Promise((resolve, reject) => {\n if (!this.ui.isStandalone()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n if (this.ui.isStandalone()) {\n this.sendRequestStandalone(id, request);\n }\n else {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n setConnectDisabled(disabled) {\n this.ui.setConnectDisabled(disabled);\n }\n setAccountsCallback(accountsCallback) {\n this.accountsCallback = accountsCallback;\n }\n setChainCallback(chainCallback) {\n this.chainCallback = chainCallback;\n }\n setDappDefaultChainCallback(chainId) {\n this.dappDefaultChainSubject.next(chainId);\n }\n publishWeb3RequestEvent(id, request) {\n var _a;\n const message = (0, Web3RequestMessage_1.Web3RequestMessage)({ id, request });\n const storedSession = Session_1.Session.load(this.storage);\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_REQUEST, {\n eventId: message.id,\n method: `relay::${message.request.method}`,\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: storedSession ? Session_1.Session.hash(storedSession.id) : \"\",\n isSessionMismatched: ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) !== this._session.id).toString(),\n });\n this.subscriptions.add(this.publishEvent(\"Web3Request\", message, true).subscribe({\n next: _ => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_REQUEST_PUBLISHED, {\n eventId: message.id,\n method: `relay::${message.request.method}`,\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: storedSession\n ? Session_1.Session.hash(storedSession.id)\n : \"\",\n isSessionMismatched: ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) !== this._session.id).toString(),\n });\n },\n error: err => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id: message.id,\n response: {\n method: message.request.method,\n errorMessage: err.message,\n },\n }));\n },\n }));\n }\n publishWeb3RequestCanceledEvent(id) {\n const message = (0, Web3RequestCanceledMessage_1.Web3RequestCanceledMessage)(id);\n this.subscriptions.add(this.publishEvent(\"Web3RequestCanceled\", message, false).subscribe());\n }\n publishEvent(event, message, callWebhook) {\n const secret = this.session.secret;\n return new rxjs_1.Observable(subscriber => {\n void aes256gcm\n .encrypt(JSON.stringify(Object.assign(Object.assign({}, message), { origin: location.origin })), secret)\n .then((encrypted) => {\n subscriber.next(encrypted);\n subscriber.complete();\n });\n }).pipe((0, operators_1.mergeMap)((encrypted) => {\n return this.connection.publishEvent(event, encrypted, callWebhook);\n }));\n }\n handleIncomingEvent(event) {\n try {\n this.subscriptions.add(aes256gcm\n .decrypt(event.data, this.session.secret)\n .pipe((0, operators_1.map)(c => JSON.parse(c)))\n .subscribe({\n next: json => {\n const message = (0, Web3ResponseMessage_1.isWeb3ResponseMessage)(json) ? json : null;\n if (!message) {\n return;\n }\n this.handleWeb3ResponseMessage(message);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"incomingEvent\",\n });\n },\n }));\n }\n catch (_a) {\n return;\n }\n }\n handleWeb3ResponseMessage(message) {\n var _a;\n const { response } = message;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_RESPONSE, {\n eventId: message.id,\n method: `relay::${response.method}`,\n sessionIdHash: this.getSessionIdHash(),\n });\n if ((0, Web3Response_1.isRequestEthereumAccountsResponse)(response)) {\n WalletSDKRelay.accountRequestCallbackIds.forEach(id => this.invokeCallback(Object.assign(Object.assign({}, message), { id })));\n WalletSDKRelay.accountRequestCallbackIds.clear();\n return;\n }\n this.invokeCallback(message);\n }\n handleErrorResponse(id, method, error, errorCode) {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.ErrorResponse)(method, (error !== null && error !== void 0 ? error : WalletUIError_1.WalletUIError.UserRejectedRequest).message, errorCode),\n }));\n }\n invokeCallback(message) {\n const callback = this.relayEventManager.callbacks.get(message.id);\n if (callback) {\n callback(message.response);\n this.relayEventManager.callbacks.delete(message.id);\n }\n }\n requestEthereumAccounts() {\n const request = {\n method: Web3Method_1.Web3Method.requestEthereumAccounts,\n params: {\n appName: this.appName,\n appLogoUrl: this.appLogoUrl || null,\n },\n };\n const hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n const promise = new Promise((resolve, reject) => {\n var _a;\n this.relayEventManager.callbacks.set(id, response => {\n this.ui.hideRequestEthereumAccounts();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const userAgent = ((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || null;\n if (userAgent &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)) {\n let location;\n try {\n if ((0, util_1.isInIFrame)() && window.top) {\n location = window.top.location;\n }\n else {\n location = window.location;\n }\n }\n catch (e) {\n location = window.location;\n }\n location.href = `https://www.coinbase.com/connect-dapp?uri=${encodeURIComponent(location.href)}`;\n return;\n }\n if (this.ui.inlineAccountsResponse()) {\n const onAccounts = (accounts) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.RequestEthereumAccountsResponse)(accounts),\n }));\n };\n this.ui.requestEthereumAccounts({\n onCancel: cancel,\n onAccounts,\n });\n }\n else {\n // Error if user closes TryExtensionLinkDialog without connecting\n const err = eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied account authorization\");\n this.ui.requestEthereumAccounts({\n onCancel: () => cancel(err),\n });\n }\n WalletSDKRelay.accountRequestCallbackIds.add(id);\n if (!this.ui.inlineAccountsResponse() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n selectProvider(providerOptions) {\n const request = {\n method: Web3Method_1.Web3Method.selectProvider,\n params: {\n providerOptions,\n },\n };\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n };\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SelectProviderResponse)(types_1.ProviderType.Unselected),\n }));\n };\n const approve = (selectedProviderKey) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SelectProviderResponse)(selectedProviderKey),\n }));\n };\n if (this.ui.selectProvider)\n this.ui.selectProvider({\n onApprove: approve,\n onCancel: _cancel,\n providerOptions,\n });\n });\n return { cancel, promise };\n }\n watchAsset(type, address, symbol, decimals, image, chainId) {\n const request = {\n method: Web3Method_1.Web3Method.watchAsset,\n params: {\n type,\n options: {\n address,\n symbol,\n decimals,\n image,\n },\n chainId,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineWatchAsset()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.WatchAssetReponse)(false),\n }));\n };\n const approve = () => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.WatchAssetReponse)(true),\n }));\n };\n if (this.ui.inlineWatchAsset()) {\n this.ui.watchAsset({\n onApprove: approve,\n onCancel: _cancel,\n type,\n address,\n symbol,\n decimals,\n image,\n chainId,\n });\n }\n if (!this.ui.inlineWatchAsset() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { cancel, promise };\n }\n addEthereumChain(chainId, rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency) {\n const request = {\n method: Web3Method_1.Web3Method.addEthereumChain,\n params: {\n chainId,\n rpcUrls,\n blockExplorerUrls,\n chainName,\n iconUrls,\n nativeCurrency,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineAddEthereumChain(chainId)) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.AddEthereumChainResponse)({\n isApproved: false,\n rpcUrl: \"\",\n }),\n }));\n };\n const approve = (rpcUrl) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.AddEthereumChainResponse)({ isApproved: true, rpcUrl }),\n }));\n };\n if (this.ui.inlineAddEthereumChain(chainId)) {\n this.ui.addEthereumChain({\n onCancel: _cancel,\n onApprove: approve,\n chainId: request.params.chainId,\n rpcUrls: request.params.rpcUrls,\n blockExplorerUrls: request.params.blockExplorerUrls,\n chainName: request.params.chainName,\n iconUrls: request.params.iconUrls,\n nativeCurrency: request.params.nativeCurrency,\n });\n }\n if (!this.ui.inlineAddEthereumChain(chainId) && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n switchEthereumChain(chainId, address) {\n const request = {\n method: Web3Method_1.Web3Method.switchEthereumChain,\n params: Object.assign({ chainId }, { address }),\n };\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n };\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n if (response.errorMessage && response.errorCode) {\n return reject(eth_rpc_errors_1.ethErrors.provider.custom({\n code: response.errorCode,\n message: `Unrecognized chain ID. Try adding the chain using addEthereumChain first.`,\n }));\n }\n else if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (error) => {\n if (typeof error === \"number\") {\n // backward compatibility\n const errorCode = error;\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.ErrorResponse)(Web3Method_1.Web3Method.switchEthereumChain, WalletUIError_1.WalletUIError.SwitchEthereumChainUnsupportedChainId.message, errorCode),\n }));\n }\n else if (error instanceof WalletUIError_1.WalletUIError) {\n this.handleErrorResponse(id, Web3Method_1.Web3Method.switchEthereumChain, error, error.errorCode);\n }\n else {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SwitchEthereumChainResponse)({\n isApproved: false,\n rpcUrl: \"\",\n }),\n }));\n }\n };\n const approve = (rpcUrl) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SwitchEthereumChainResponse)({\n isApproved: true,\n rpcUrl,\n }),\n }));\n };\n this.ui.switchEthereumChain({\n onCancel: _cancel,\n onApprove: approve,\n chainId: request.params.chainId,\n address: request.params.address,\n });\n if (!this.ui.inlineSwitchEthereumChain() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n inlineAddEthereumChain(chainId) {\n return this.ui.inlineAddEthereumChain(chainId);\n }\n getSessionIdHash() {\n return Session_1.Session.hash(this._session.id);\n }\n sendRequestStandalone(id, request) {\n const _cancel = (error) => {\n this.handleErrorResponse(id, request.method, error);\n };\n const onSuccess = (response) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response,\n }));\n };\n switch (request.method) {\n case Web3Method_1.Web3Method.signEthereumMessage:\n this.ui.signEthereumMessage({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.signEthereumTransaction:\n this.ui.signEthereumTransaction({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.submitEthereumTransaction:\n this.ui.submitEthereumTransaction({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.ethereumAddressFromSignedMessage:\n this.ui.ethereumAddressFromSignedMessage({\n request,\n onSuccess,\n });\n break;\n default:\n _cancel();\n break;\n }\n }\n onSessionConfigChanged(_nextSessionConfig) { }\n}\nWalletSDKRelay.accountRequestCallbackIds = new Set();\n__decorate([\n bind_decorator_1.default\n], WalletSDKRelay.prototype, \"resetAndReload\", null);\n__decorate([\n bind_decorator_1.default\n], WalletSDKRelay.prototype, \"handleIncomingEvent\", null);\nexports.WalletSDKRelay = WalletSDKRelay;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelayAbstract = exports.APP_VERSION_KEY = exports.LOCAL_STORAGE_ADDRESSES_KEY = exports.WALLET_USER_NAME_KEY = void 0;\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nexports.WALLET_USER_NAME_KEY = \"walletUsername\";\nexports.LOCAL_STORAGE_ADDRESSES_KEY = \"Addresses\";\nexports.APP_VERSION_KEY = \"AppVersion\";\nclass WalletSDKRelayAbstract {\n async makeEthereumJSONRPCRequest(request, jsonRpcUrl) {\n if (!jsonRpcUrl)\n throw new Error(\"Error: No jsonRpcUrl provided\");\n return window\n .fetch(jsonRpcUrl, {\n method: \"POST\",\n body: JSON.stringify(request),\n mode: \"cors\",\n headers: { \"Content-Type\": \"application/json\" },\n })\n .then(res => res.json())\n .then(json => {\n if (!json) {\n throw eth_rpc_errors_1.ethErrors.rpc.parse({});\n }\n const response = json;\n const { error } = response;\n if (error) {\n throw (0, eth_rpc_errors_1.serializeError)(error);\n }\n return response;\n });\n }\n}\nexports.WalletSDKRelayAbstract = WalletSDKRelayAbstract;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelayEventManager = void 0;\nconst util_1 = require(\"../util\");\nclass WalletSDKRelayEventManager {\n constructor() {\n this._nextRequestId = 0;\n this.callbacks = new Map();\n }\n makeRequestId() {\n // max nextId == max int32 for compatibility with mobile\n this._nextRequestId = (this._nextRequestId + 1) % 0x7fffffff;\n const id = this._nextRequestId;\n const idStr = (0, util_1.prepend0x)(id.toString(16));\n // unlikely that this will ever be an issue, but just to be safe\n const callback = this.callbacks.get(idStr);\n if (callback) {\n this.callbacks.delete(idStr);\n }\n return id;\n }\n}\nexports.WalletSDKRelayEventManager = WalletSDKRelayEventManager;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3Method = void 0;\nvar Web3Method;\n(function (Web3Method) {\n Web3Method[\"requestEthereumAccounts\"] = \"requestEthereumAccounts\";\n Web3Method[\"signEthereumMessage\"] = \"signEthereumMessage\";\n Web3Method[\"signEthereumTransaction\"] = \"signEthereumTransaction\";\n Web3Method[\"submitEthereumTransaction\"] = \"submitEthereumTransaction\";\n Web3Method[\"ethereumAddressFromSignedMessage\"] = \"ethereumAddressFromSignedMessage\";\n Web3Method[\"scanQRCode\"] = \"scanQRCode\";\n Web3Method[\"generic\"] = \"generic\";\n Web3Method[\"childRequestEthereumAccounts\"] = \"childRequestEthereumAccounts\";\n Web3Method[\"addEthereumChain\"] = \"addEthereumChain\";\n Web3Method[\"switchEthereumChain\"] = \"switchEthereumChain\";\n Web3Method[\"makeEthereumJSONRPCRequest\"] = \"makeEthereumJSONRPCRequest\";\n Web3Method[\"watchAsset\"] = \"watchAsset\";\n Web3Method[\"selectProvider\"] = \"selectProvider\";\n})(Web3Method = exports.Web3Method || (exports.Web3Method = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3RequestCanceledMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3RequestCanceledMessage(id) {\n return { type: RelayMessage_1.RelayMessageType.WEB3_REQUEST_CANCELED, id };\n}\nexports.Web3RequestCanceledMessage = Web3RequestCanceledMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3RequestMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3RequestMessage(params) {\n return Object.assign({ type: RelayMessage_1.RelayMessageType.WEB3_REQUEST }, params);\n}\nexports.Web3RequestMessage = Web3RequestMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EthereumAddressFromSignedMessageResponse = exports.SubmitEthereumTransactionResponse = exports.SignEthereumTransactionResponse = exports.SignEthereumMessageResponse = exports.isRequestEthereumAccountsResponse = exports.SelectProviderResponse = exports.WatchAssetReponse = exports.RequestEthereumAccountsResponse = exports.SwitchEthereumChainResponse = exports.AddEthereumChainResponse = exports.ErrorResponse = void 0;\nconst Web3Method_1 = require(\"./Web3Method\");\nfunction ErrorResponse(method, errorMessage, errorCode) {\n return { method, errorMessage, errorCode };\n}\nexports.ErrorResponse = ErrorResponse;\nfunction AddEthereumChainResponse(addResponse) {\n return {\n method: Web3Method_1.Web3Method.addEthereumChain,\n result: addResponse,\n };\n}\nexports.AddEthereumChainResponse = AddEthereumChainResponse;\nfunction SwitchEthereumChainResponse(switchResponse) {\n return {\n method: Web3Method_1.Web3Method.switchEthereumChain,\n result: switchResponse,\n };\n}\nexports.SwitchEthereumChainResponse = SwitchEthereumChainResponse;\nfunction RequestEthereumAccountsResponse(addresses) {\n return { method: Web3Method_1.Web3Method.requestEthereumAccounts, result: addresses };\n}\nexports.RequestEthereumAccountsResponse = RequestEthereumAccountsResponse;\nfunction WatchAssetReponse(success) {\n return { method: Web3Method_1.Web3Method.watchAsset, result: success };\n}\nexports.WatchAssetReponse = WatchAssetReponse;\nfunction SelectProviderResponse(selectedProviderKey) {\n return { method: Web3Method_1.Web3Method.selectProvider, result: selectedProviderKey };\n}\nexports.SelectProviderResponse = SelectProviderResponse;\nfunction isRequestEthereumAccountsResponse(res) {\n return res && res.method === Web3Method_1.Web3Method.requestEthereumAccounts;\n}\nexports.isRequestEthereumAccountsResponse = isRequestEthereumAccountsResponse;\nfunction SignEthereumMessageResponse(signature) {\n return { method: Web3Method_1.Web3Method.signEthereumMessage, result: signature };\n}\nexports.SignEthereumMessageResponse = SignEthereumMessageResponse;\nfunction SignEthereumTransactionResponse(signedData) {\n return { method: Web3Method_1.Web3Method.signEthereumTransaction, result: signedData };\n}\nexports.SignEthereumTransactionResponse = SignEthereumTransactionResponse;\nfunction SubmitEthereumTransactionResponse(txHash) {\n return { method: Web3Method_1.Web3Method.submitEthereumTransaction, result: txHash };\n}\nexports.SubmitEthereumTransactionResponse = SubmitEthereumTransactionResponse;\nfunction EthereumAddressFromSignedMessageResponse(address) {\n return {\n method: Web3Method_1.Web3Method.ethereumAddressFromSignedMessage,\n result: address,\n };\n}\nexports.EthereumAddressFromSignedMessageResponse = EthereumAddressFromSignedMessageResponse;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWeb3ResponseMessage = exports.Web3ResponseMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3ResponseMessage(params) {\n return Object.assign({ type: RelayMessage_1.RelayMessageType.WEB3_RESPONSE }, params);\n}\nexports.Web3ResponseMessage = Web3ResponseMessage;\nfunction isWeb3ResponseMessage(msg) {\n return msg && msg.type === RelayMessage_1.RelayMessageType.WEB3_RESPONSE;\n}\nexports.isWeb3ResponseMessage = isWeb3ResponseMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decrypt = exports.encrypt = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst util_1 = require(\"../util\");\n/**\n *\n * @param plainText string to be encrypted\n * @param secret hex representation of 32-byte secret\n * returns hex string representation of bytes in the order: initialization vector (iv),\n * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes. Remaining bytes are the\n * encrypted plainText.\n */\nasync function encrypt(plainText, secret) {\n if (secret.length !== 64)\n throw Error(`secret must be 256 bits`);\n const ivBytes = crypto.getRandomValues(new Uint8Array(12));\n const secretKey = await crypto.subtle.importKey(\"raw\", (0, util_1.hexStringToUint8Array)(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n const enc = new TextEncoder();\n // Will return encrypted plainText with auth tag (ie MAC or checksum) appended at the end\n const encryptedResult = await window.crypto.subtle.encrypt({\n name: \"AES-GCM\",\n iv: ivBytes,\n }, secretKey, enc.encode(plainText));\n const tagLength = 16;\n const authTag = encryptedResult.slice(encryptedResult.byteLength - tagLength);\n const encryptedPlaintext = encryptedResult.slice(0, encryptedResult.byteLength - tagLength);\n const authTagBytes = new Uint8Array(authTag);\n const encryptedPlaintextBytes = new Uint8Array(encryptedPlaintext);\n const concatted = new Uint8Array([\n ...ivBytes,\n ...authTagBytes,\n ...encryptedPlaintextBytes,\n ]);\n return (0, util_1.uint8ArrayToHex)(concatted);\n}\nexports.encrypt = encrypt;\n/**\n *\n * @param cipherText hex string representation of bytes in the order: initialization vector (iv),\n * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes.\n * @param secret hex string representation of 32-byte secret\n *\n * TODO: Update rxjs for promises\n */\nfunction decrypt(cipherText, secret) {\n if (secret.length !== 64)\n throw Error(`secret must be 256 bits`);\n return new rxjs_1.Observable(subscriber => {\n void (async function () {\n const secretKey = await crypto.subtle.importKey(\"raw\", (0, util_1.hexStringToUint8Array)(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n const encrypted = (0, util_1.hexStringToUint8Array)(cipherText);\n const ivBytes = encrypted.slice(0, 12);\n const authTagBytes = encrypted.slice(12, 28);\n const encryptedPlaintextBytes = encrypted.slice(28);\n const concattedBytes = new Uint8Array([\n ...encryptedPlaintextBytes,\n ...authTagBytes,\n ]);\n const algo = {\n name: \"AES-GCM\",\n iv: new Uint8Array(ivBytes),\n };\n try {\n const decrypted = await window.crypto.subtle.decrypt(algo, secretKey, concattedBytes);\n const decoder = new TextDecoder();\n subscriber.next(decoder.decode(decrypted));\n subscriber.complete();\n }\n catch (err) {\n subscriber.error(err);\n }\n })();\n });\n}\nexports.decrypt = decrypt;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderType = exports.RegExpString = exports.IntNumber = exports.BigIntString = exports.AddressString = exports.HexString = exports.OpaqueType = void 0;\nfunction OpaqueType() {\n return (value) => value;\n}\nexports.OpaqueType = OpaqueType;\nexports.HexString = OpaqueType();\nexports.AddressString = OpaqueType();\nexports.BigIntString = OpaqueType();\nfunction IntNumber(num) {\n return Math.floor(num);\n}\nexports.IntNumber = IntNumber;\nexports.RegExpString = OpaqueType();\nvar ProviderType;\n(function (ProviderType) {\n ProviderType[\"CoinbaseWallet\"] = \"CoinbaseWallet\";\n ProviderType[\"MetaMask\"] = \"MetaMask\";\n ProviderType[\"Unselected\"] = \"\";\n})(ProviderType = exports.ProviderType || (exports.ProviderType = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isInIFrame = exports.createQrUrl = exports.getFavicon = exports.range = exports.isBigNumber = exports.ensureParsedJSONObject = exports.ensureBN = exports.ensureRegExpString = exports.ensureIntNumber = exports.ensureBuffer = exports.ensureAddressString = exports.ensureEvenLengthHexString = exports.ensureHexString = exports.isHexString = exports.prepend0x = exports.strip0x = exports.has0xPrefix = exports.hexStringFromIntNumber = exports.intNumberFromHexString = exports.bigIntStringFromBN = exports.hexStringFromBuffer = exports.hexStringToUint8Array = exports.uint8ArrayToHex = exports.randomBytesHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst qs_1 = require(\"qs\");\nconst types_1 = require(\"./types\");\nconst INT_STRING_REGEX = /^[0-9]*$/;\nconst HEXADECIMAL_STRING_REGEX = /^[a-f0-9]*$/;\n/**\n * @param length number of bytes\n */\nfunction randomBytesHex(length) {\n return uint8ArrayToHex(crypto.getRandomValues(new Uint8Array(length)));\n}\nexports.randomBytesHex = randomBytesHex;\nfunction uint8ArrayToHex(value) {\n return [...value].map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nexports.uint8ArrayToHex = uint8ArrayToHex;\nfunction hexStringToUint8Array(hexString) {\n return new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));\n}\nexports.hexStringToUint8Array = hexStringToUint8Array;\nfunction hexStringFromBuffer(buf, includePrefix = false) {\n const hex = buf.toString(\"hex\");\n return (0, types_1.HexString)(includePrefix ? \"0x\" + hex : hex);\n}\nexports.hexStringFromBuffer = hexStringFromBuffer;\nfunction bigIntStringFromBN(bn) {\n return (0, types_1.BigIntString)(bn.toString(10));\n}\nexports.bigIntStringFromBN = bigIntStringFromBN;\nfunction intNumberFromHexString(hex) {\n return (0, types_1.IntNumber)(new bn_js_1.default(ensureEvenLengthHexString(hex, false), 16).toNumber());\n}\nexports.intNumberFromHexString = intNumberFromHexString;\nfunction hexStringFromIntNumber(num) {\n return (0, types_1.HexString)(\"0x\" + new bn_js_1.default(num).toString(16));\n}\nexports.hexStringFromIntNumber = hexStringFromIntNumber;\nfunction has0xPrefix(str) {\n return str.startsWith(\"0x\") || str.startsWith(\"0X\");\n}\nexports.has0xPrefix = has0xPrefix;\nfunction strip0x(hex) {\n if (has0xPrefix(hex)) {\n return hex.slice(2);\n }\n return hex;\n}\nexports.strip0x = strip0x;\nfunction prepend0x(hex) {\n if (has0xPrefix(hex)) {\n return \"0x\" + hex.slice(2);\n }\n return \"0x\" + hex;\n}\nexports.prepend0x = prepend0x;\nfunction isHexString(hex) {\n if (typeof hex !== \"string\") {\n return false;\n }\n const s = strip0x(hex).toLowerCase();\n return HEXADECIMAL_STRING_REGEX.test(s);\n}\nexports.isHexString = isHexString;\nfunction ensureHexString(hex, includePrefix = false) {\n if (typeof hex === \"string\") {\n const s = strip0x(hex).toLowerCase();\n if (HEXADECIMAL_STRING_REGEX.test(s)) {\n return (0, types_1.HexString)(includePrefix ? \"0x\" + s : s);\n }\n }\n throw new Error(`\"${String(hex)}\" is not a hexadecimal string`);\n}\nexports.ensureHexString = ensureHexString;\nfunction ensureEvenLengthHexString(hex, includePrefix = false) {\n let h = ensureHexString(hex, false);\n if (h.length % 2 === 1) {\n h = (0, types_1.HexString)(\"0\" + h);\n }\n return includePrefix ? (0, types_1.HexString)(\"0x\" + h) : h;\n}\nexports.ensureEvenLengthHexString = ensureEvenLengthHexString;\nfunction ensureAddressString(str) {\n if (typeof str === \"string\") {\n const s = strip0x(str).toLowerCase();\n if (isHexString(s) && s.length === 40) {\n return (0, types_1.AddressString)(prepend0x(s));\n }\n }\n throw new Error(`Invalid Ethereum address: ${String(str)}`);\n}\nexports.ensureAddressString = ensureAddressString;\nfunction ensureBuffer(str) {\n if (Buffer.isBuffer(str)) {\n return str;\n }\n if (typeof str === \"string\") {\n if (isHexString(str)) {\n const s = ensureEvenLengthHexString(str, false);\n return Buffer.from(s, \"hex\");\n }\n else {\n return Buffer.from(str, \"utf8\");\n }\n }\n throw new Error(`Not binary data: ${String(str)}`);\n}\nexports.ensureBuffer = ensureBuffer;\nfunction ensureIntNumber(num) {\n if (typeof num === \"number\" && Number.isInteger(num)) {\n return (0, types_1.IntNumber)(num);\n }\n if (typeof num === \"string\") {\n if (INT_STRING_REGEX.test(num)) {\n return (0, types_1.IntNumber)(Number(num));\n }\n if (isHexString(num)) {\n return (0, types_1.IntNumber)(new bn_js_1.default(ensureEvenLengthHexString(num, false), 16).toNumber());\n }\n }\n throw new Error(`Not an integer: ${String(num)}`);\n}\nexports.ensureIntNumber = ensureIntNumber;\nfunction ensureRegExpString(regExp) {\n if (regExp instanceof RegExp) {\n return (0, types_1.RegExpString)(regExp.toString());\n }\n throw new Error(`Not a RegExp: ${String(regExp)}`);\n}\nexports.ensureRegExpString = ensureRegExpString;\nfunction ensureBN(val) {\n if (val !== null && (bn_js_1.default.isBN(val) || isBigNumber(val))) {\n return new bn_js_1.default(val.toString(10), 10);\n }\n if (typeof val === \"number\") {\n return new bn_js_1.default(ensureIntNumber(val));\n }\n if (typeof val === \"string\") {\n if (INT_STRING_REGEX.test(val)) {\n return new bn_js_1.default(val, 10);\n }\n if (isHexString(val)) {\n return new bn_js_1.default(ensureEvenLengthHexString(val, false), 16);\n }\n }\n throw new Error(`Not an integer: ${String(val)}`);\n}\nexports.ensureBN = ensureBN;\nfunction ensureParsedJSONObject(val) {\n if (typeof val === \"string\") {\n return JSON.parse(val);\n }\n if (typeof val === \"object\") {\n return val;\n }\n throw new Error(`Not a JSON string or an object: ${String(val)}`);\n}\nexports.ensureParsedJSONObject = ensureParsedJSONObject;\nfunction isBigNumber(val) {\n if (val == null || typeof val.constructor !== \"function\") {\n return false;\n }\n const { constructor } = val;\n return (typeof constructor.config === \"function\" &&\n typeof constructor.EUCLID === \"number\");\n}\nexports.isBigNumber = isBigNumber;\nfunction range(start, stop) {\n return Array.from({ length: stop - start }, (_, i) => start + i);\n}\nexports.range = range;\nfunction getFavicon() {\n const el = document.querySelector('link[sizes=\"192x192\"]') ||\n document.querySelector('link[sizes=\"180x180\"]') ||\n document.querySelector('link[rel=\"icon\"]') ||\n document.querySelector('link[rel=\"shortcut icon\"]');\n const { protocol, host } = document.location;\n const href = el ? el.getAttribute(\"href\") : null;\n if (!href || href.startsWith(\"javascript:\")) {\n return null;\n }\n if (href.startsWith(\"http://\") ||\n href.startsWith(\"https://\") ||\n href.startsWith(\"data:\")) {\n return href;\n }\n if (href.startsWith(\"//\")) {\n return protocol + href;\n }\n return `${protocol}//${host}${href}`;\n}\nexports.getFavicon = getFavicon;\nfunction createQrUrl(sessionId, sessionSecret, serverUrl, isParentConnection, version, chainId) {\n const sessionIdKey = isParentConnection ? \"parent-id\" : \"id\";\n const query = (0, qs_1.stringify)({\n [sessionIdKey]: sessionId,\n secret: sessionSecret,\n server: serverUrl,\n v: version,\n chainId,\n });\n const qrUrl = `${serverUrl}/#/link?${query}`;\n return qrUrl;\n}\nexports.createQrUrl = createQrUrl;\nfunction isInIFrame() {\n try {\n return window.frameElement !== null;\n }\n catch (e) {\n return false;\n }\n}\nexports.isInIFrame = isInIFrame;\n","// Extracted from https://github.com/ethereumjs/ethereumjs-abi and stripped out irrelevant code\n// Original code licensed under the MIT License - Copyright (c) 2015 Alex Beregszaszi\n\nconst util = require('./util')\nconst BN = require('bn.js')\n\n// Convert from short to canonical names\n// FIXME: optimise or make this nicer?\nfunction elementaryName (name) {\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3)\n } else if (name === 'int') {\n return 'int256'\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4)\n } else if (name === 'uint') {\n return 'uint256'\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5)\n } else if (name === 'fixed') {\n return 'fixed128x128'\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6)\n } else if (name === 'ufixed') {\n return 'ufixed128x128'\n }\n return name\n}\n\n// Parse N from type\nfunction parseTypeN (type) {\n return parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10)\n}\n\n// Parse N,M from typex\nfunction parseTypeNxM (type) {\n var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type)\n return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ]\n}\n\n// Parse N in type[] where \"type\" can itself be an array type.\nfunction parseTypeArray (type) {\n var tmp = type.match(/(.*)\\[(.*?)\\]$/)\n if (tmp) {\n return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10)\n }\n return null\n}\n\nfunction parseNumber (arg) {\n var type = typeof arg\n if (type === 'string') {\n if (util.isHexString(arg)) {\n return new BN(util.stripHexPrefix(arg), 16)\n } else {\n return new BN(arg, 10)\n }\n } else if (type === 'number') {\n return new BN(arg)\n } else if (arg.toArray) {\n // assume this is a BN for the moment, replace with BN.isBN soon\n return arg\n } else {\n throw new Error('Argument is not a number')\n }\n}\n\n// Encodes a single item (can be dynamic array)\n// @returns: Buffer\nfunction encodeSingle (type, arg) {\n var size, num, ret, i\n\n if (type === 'address') {\n return encodeSingle('uint160', parseNumber(arg))\n } else if (type === 'bool') {\n return encodeSingle('uint8', arg ? 1 : 0)\n } else if (type === 'string') {\n return encodeSingle('bytes', new Buffer(arg, 'utf8'))\n } else if (isArray(type)) {\n // this part handles fixed-length ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n if (typeof arg.length === 'undefined') {\n throw new Error('Not an array?')\n }\n size = parseTypeArray(type)\n if (size !== 'dynamic' && size !== 0 && arg.length > size) {\n throw new Error('Elements exceed array size: ' + size)\n }\n ret = []\n type = type.slice(0, type.lastIndexOf('['))\n if (typeof arg === 'string') {\n arg = JSON.parse(arg)\n }\n for (i in arg) {\n ret.push(encodeSingle(type, arg[i]))\n }\n if (size === 'dynamic') {\n var length = encodeSingle('uint256', arg.length)\n ret.unshift(length)\n }\n return Buffer.concat(ret)\n } else if (type === 'bytes') {\n arg = new Buffer(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, util.zeros(32 - (arg.length % 32)) ])\n }\n\n return ret\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return util.setLengthRight(arg, 32)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n if (num < 0) {\n throw new Error('Supplied uint is negative')\n }\n\n return num.toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n return num.toTwos(256).toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('ufixed')) {\n size = parseTypeNxM(type)\n\n num = parseNumber(arg)\n\n if (num < 0) {\n throw new Error('Supplied ufixed is negative')\n }\n\n return encodeSingle('uint256', num.mul(new BN(2).pow(new BN(size[1]))))\n } else if (type.startsWith('fixed')) {\n size = parseTypeNxM(type)\n\n return encodeSingle('int256', parseNumber(arg).mul(new BN(2).pow(new BN(size[1]))))\n }\n\n throw new Error('Unsupported or invalid type: ' + type)\n}\n\n// Is a type dynamic?\nfunction isDynamic (type) {\n // FIXME: handle all types? I don't think anything is missing now\n return (type === 'string') || (type === 'bytes') || (parseTypeArray(type) === 'dynamic')\n}\n\n// Is a type an array?\nfunction isArray (type) {\n return type.lastIndexOf(']') === type.length - 1\n}\n\n// Encode a method/event with arguments\n// @types an array of string type names\n// @args an array of the appropriate values\nfunction rawEncode (types, values) {\n var output = []\n var data = []\n\n var headLength = 32 * types.length\n\n for (var i in types) {\n var type = elementaryName(types[i])\n var value = values[i]\n var cur = encodeSingle(type, value)\n\n // Use the head/tail method for storing dynamic data\n if (isDynamic(type)) {\n output.push(encodeSingle('uint256', headLength))\n data.push(cur)\n headLength += cur.length\n } else {\n output.push(cur)\n }\n }\n\n return Buffer.concat(output.concat(data))\n}\n\nfunction solidityPack (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\n var size, num\n var ret = []\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n\n if (type === 'bytes') {\n ret.push(value)\n } else if (type === 'string') {\n ret.push(new Buffer(value, 'utf8'))\n } else if (type === 'bool') {\n ret.push(new Buffer(value ? '01' : '00', 'hex'))\n } else if (type === 'address') {\n ret.push(util.setLength(value, 20))\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n ret.push(util.setLengthRight(value, size))\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toArrayLike(Buffer, 'be', size / 8))\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toTwos(size).toArrayLike(Buffer, 'be', size / 8))\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n\n return Buffer.concat(ret)\n}\n\nfunction soliditySHA3 (types, values) {\n return util.keccak(solidityPack(types, values))\n}\n\nmodule.exports = {\n rawEncode,\n solidityPack,\n soliditySHA3\n}\n","const util = require('./util')\nconst abi = require('./abi')\n\nconst TYPED_MESSAGE_SCHEMA = {\n type: 'object',\n properties: {\n types: {\n type: 'object',\n additionalProperties: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: {type: 'string'},\n type: {type: 'string'},\n },\n required: ['name', 'type'],\n },\n },\n },\n primaryType: {type: 'string'},\n domain: {type: 'object'},\n message: {type: 'object'},\n },\n required: ['types', 'primaryType', 'domain', 'message'],\n}\n\n/**\n * A collection of utility functions used for signing typed data\n */\nconst TypedDataUtils = {\n /**\n * Encodes an object by encoding and concatenating each of its members\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of an object\n */\n encodeData (primaryType, data, types, useV4 = true) {\n const encodedTypes = ['bytes32']\n const encodedValues = [this.hashType(primaryType, types)]\n\n if(useV4) {\n const encodeField = (name, type, value) => {\n if (types[type] !== undefined) {\n return ['bytes32', value == null ?\n '0x0000000000000000000000000000000000000000000000000000000000000000' :\n util.keccak(this.encodeData(type, value, types, useV4))]\n }\n\n if(value === undefined)\n throw new Error(`missing value for field ${name} of type ${type}`)\n\n if (type === 'bytes') {\n return ['bytes32', util.keccak(value)]\n }\n\n if (type === 'string') {\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8')\n }\n return ['bytes32', util.keccak(value)]\n }\n\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['))\n const typeValuePairs = value.map(item =>\n encodeField(name, parsedType, item))\n return ['bytes32', util.keccak(abi.rawEncode(\n typeValuePairs.map(([type]) => type),\n typeValuePairs.map(([, value]) => value),\n ))]\n }\n\n return [type, value]\n }\n\n for (const field of types[primaryType]) {\n const [type, value] = encodeField(field.name, field.type, data[field.name])\n encodedTypes.push(type)\n encodedValues.push(value)\n }\n } else {\n for (const field of types[primaryType]) {\n let value = data[field.name]\n if (value !== undefined) {\n if (field.type === 'bytes') {\n encodedTypes.push('bytes32')\n value = util.keccak(value)\n encodedValues.push(value)\n } else if (field.type === 'string') {\n encodedTypes.push('bytes32')\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8')\n }\n value = util.keccak(value)\n encodedValues.push(value)\n } else if (types[field.type] !== undefined) {\n encodedTypes.push('bytes32')\n value = util.keccak(this.encodeData(field.type, value, types, useV4))\n encodedValues.push(value)\n } else if (field.type.lastIndexOf(']') === field.type.length - 1) {\n throw new Error('Arrays currently unimplemented in encodeData')\n } else {\n encodedTypes.push(field.type)\n encodedValues.push(value)\n }\n }\n }\n }\n\n return abi.rawEncode(encodedTypes, encodedValues)\n },\n\n /**\n * Encodes the type of an object by encoding a comma delimited list of its members\n *\n * @param {string} primaryType - Root type to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of the type of an object\n */\n encodeType (primaryType, types) {\n let result = ''\n let deps = this.findTypeDependencies(primaryType, types).filter(dep => dep !== primaryType)\n deps = [primaryType].concat(deps.sort())\n for (const type of deps) {\n const children = types[type]\n if (!children) {\n throw new Error('No type definition specified: ' + type)\n }\n result += type + '(' + types[type].map(({ name, type }) => type + ' ' + name).join(',') + ')'\n }\n return result\n },\n\n /**\n * Finds all types within a type defintion object\n *\n * @param {string} primaryType - Root type\n * @param {Object} types - Type definitions\n * @param {Array} results - current set of accumulated types\n * @returns {Array} - Set of all types found in the type definition\n */\n findTypeDependencies (primaryType, types, results = []) {\n primaryType = primaryType.match(/^\\w*/)[0]\n if (results.includes(primaryType) || types[primaryType] === undefined) { return results }\n results.push(primaryType)\n for (const field of types[primaryType]) {\n for (const dep of this.findTypeDependencies(field.type, types, results)) {\n !results.includes(dep) && results.push(dep)\n }\n }\n return results\n },\n\n /**\n * Hashes an object\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to hash\n * @param {Object} types - Type definitions\n * @returns {Buffer} - Hash of an object\n */\n hashStruct (primaryType, data, types, useV4 = true) {\n return util.keccak(this.encodeData(primaryType, data, types, useV4))\n },\n\n /**\n * Hashes the type of an object\n *\n * @param {string} primaryType - Root type to hash\n * @param {Object} types - Type definitions\n * @returns {string} - Hash of an object\n */\n hashType (primaryType, types) {\n return util.keccak(this.encodeType(primaryType, types))\n },\n\n /**\n * Removes properties from a message object that are not defined per EIP-712\n *\n * @param {Object} data - typed message object\n * @returns {Object} - typed message object with only allowed fields\n */\n sanitizeData (data) {\n const sanitizedData = {}\n for (const key in TYPED_MESSAGE_SCHEMA.properties) {\n data[key] && (sanitizedData[key] = data[key])\n }\n if (sanitizedData.types) {\n sanitizedData.types = Object.assign({ EIP712Domain: [] }, sanitizedData.types)\n }\n return sanitizedData\n },\n\n /**\n * Returns the hash of a typed message as per EIP-712 for signing\n *\n * @param {Object} typedData - Types message data to sign\n * @returns {string} - sha3 hash for signing\n */\n hash (typedData, useV4 = true) {\n const sanitizedData = this.sanitizeData(typedData)\n const parts = [Buffer.from('1901', 'hex')]\n parts.push(this.hashStruct('EIP712Domain', sanitizedData.domain, sanitizedData.types, useV4))\n if (sanitizedData.primaryType !== 'EIP712Domain') {\n parts.push(this.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, useV4))\n }\n return util.keccak(Buffer.concat(parts))\n },\n}\n\nmodule.exports = {\n TYPED_MESSAGE_SCHEMA,\n TypedDataUtils,\n\n hashForSignTypedDataLegacy: function (msgParams) {\n return typedSignatureHashLegacy(msgParams.data)\n },\n\n hashForSignTypedData_v3: function (msgParams) {\n return TypedDataUtils.hash(msgParams.data, false)\n },\n\n hashForSignTypedData_v4: function (msgParams) {\n return TypedDataUtils.hash(msgParams.data)\n },\n}\n\n/**\n * @param typedData - Array of data along with types, as per EIP712.\n * @returns Buffer\n */\nfunction typedSignatureHashLegacy(typedData) {\n const error = new Error('Expect argument to be non-empty array')\n if (typeof typedData !== 'object' || !typedData.length) throw error\n\n const data = typedData.map(function (e) {\n return e.type === 'bytes' ? util.toBuffer(e.value) : e.value\n })\n const types = typedData.map(function (e) { return e.type })\n const schema = typedData.map(function (e) {\n if (!e.name) throw error\n return e.type + ' ' + e.name\n })\n\n return abi.soliditySHA3(\n ['bytes32', 'bytes32'],\n [\n abi.soliditySHA3(new Array(typedData.length).fill('string'), schema),\n abi.soliditySHA3(types, data)\n ]\n )\n}\n","// Extracted from https://github.com/ethereumjs/ethereumjs-util and stripped out irrelevant code\n// Original code licensed under the Mozilla Public License Version 2.0\n\nconst createKeccakHash = require('keccak/js')\nconst BN = require('bn.js')\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nfunction zeros (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method setLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nfunction setLength (msg, length, right) {\n const buf = zeros(length)\n msg = toBuffer(msg)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nfunction setLengthRight (msg, length) {\n return setLength(msg, length, true)\n}\n\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param {*} v the value\n */\nfunction toBuffer (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v)\n } else if (typeof v === 'string') {\n if (isHexString(v)) {\n v = Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n } else {\n v = Buffer.from(v)\n }\n } else if (typeof v === 'number') {\n v = intToBuffer(v)\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0)\n } else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer)\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray())\n } else {\n throw new Error('invalid type')\n }\n }\n return v\n}\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nfunction bufferToHex (buf) {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Creates Keccak hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the Keccak width\n * @return {Buffer}\n */\nfunction keccak (a, bits) {\n a = toBuffer(a)\n if (!bits) bits = 256\n\n return createKeccakHash('keccak' + bits).update(a).digest()\n}\n\nfunction padToEven (str) {\n return str.length % 2 ? '0' + str : str\n}\n\nfunction isHexString (str) {\n return typeof str === 'string' && str.match(/^0x[0-9A-Fa-f]*$/)\n}\n\nfunction stripHexPrefix (str) {\n if (typeof str === 'string' && str.startsWith('0x')) {\n return str.slice(2)\n }\n return str\n}\n\nmodule.exports = {\n zeros,\n setLength,\n setLengthRight,\n isHexString,\n stripHexPrefix,\n toBuffer,\n bufferToHex,\n keccak\n}\n","/**\n * @fileoverview\n * - modified davidshimjs/qrcodejs library for use in node.js\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n *\n * @version 0.9.1 (2016-02-12)\n * @author davidshimjs, papnkukn\n * @see http://www.d-project.com/\n * @see http://jeromeetienne.github.com/jquery-qrcode/\n * @see https://github.com/davidshimjs/qrcodejs\n */\n\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\nfunction QR8bitByte(data) {\n this.mode = QRMode.MODE_8BIT_BYTE;\n this.data = data;\n this.parsedData = [];\n\n // Added to support UTF-8 Characters\n for (var i = 0, l = this.data.length; i < l; i++) {\n var byteArray = [];\n var code = this.data.charCodeAt(i);\n\n if (code > 0x10000) {\n byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[3] = 0x80 | (code & 0x3F);\n } else if (code > 0x800) {\n byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[2] = 0x80 | (code & 0x3F);\n } else if (code > 0x80) {\n byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n byteArray[1] = 0x80 | (code & 0x3F);\n } else {\n byteArray[0] = code;\n }\n\n this.parsedData.push(byteArray);\n }\n\n this.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n if (this.parsedData.length != this.data.length) {\n this.parsedData.unshift(191);\n this.parsedData.unshift(187);\n this.parsedData.unshift(239);\n }\n}\n\nQR8bitByte.prototype = {\n getLength: function (buffer) {\n return this.parsedData.length;\n },\n write: function (buffer) {\n for (var i = 0, l = this.parsedData.length; i < l; i++) {\n buffer.put(this.parsedData[i], 8);\n }\n }\n};\n\nfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n}\n\nQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\nreturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);}\nif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\nthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\nreturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\nfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\nfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\nthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);}\nvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\nthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\nrow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error(\"code length overflow. (\"\n+buffer.getLengthInBits()\n+\">\"\n+totalDataCount*8\n+\")\");}\nif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\nwhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\nwhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD1,8);}\nreturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}}\nvar totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\nreturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\nreturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\nreturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}}\nfor(var row=0;row=256){n-=255;}\nreturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\nif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\nthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\n\n/** Constructor */\nfunction QRCode(options) {\n var instance = this;\n\n //Default options\n this.options = {\n padding: 4,\n width: 256,\n height: 256,\n typeNumber: 4,\n color: \"#000000\",\n background: \"#ffffff\",\n ecl: \"M\",\n image:{\n svg:\"\",\n width:0,\n height:0\n }\n };\n\n //In case the options is string\n if (typeof options === 'string') {\n options = {\n content: options\n };\n }\n\n //Merge options\n if (options) {\n for (var i in options) {\n this.options[i] = options[i];\n }\n }\n\n if (typeof this.options.content !== 'string') {\n throw new Error(\"Expected 'content' as string!\");\n }\n\n if (this.options.content.length === 0 /* || this.options.content.length > 7089 */) {\n throw new Error(\"Expected 'content' to be non-empty!\");\n }\n\n if (!(this.options.padding >= 0)) {\n throw new Error(\"Expected 'padding' value to be non-negative!\");\n }\n\n if (!(this.options.width > 0) || !(this.options.height > 0)) {\n throw new Error(\"Expected 'width' or 'height' value to be higher than zero!\");\n }\n\n //Gets the error correction level\n function _getErrorCorrectLevel(ecl) {\n switch (ecl) {\n case \"L\":\n return QRErrorCorrectLevel.L;\n\n case \"M\":\n return QRErrorCorrectLevel.M;\n\n case \"Q\":\n return QRErrorCorrectLevel.Q;\n\n case \"H\":\n return QRErrorCorrectLevel.H;\n\n default:\n throw new Error(\"Unknwon error correction level: \" + ecl);\n }\n }\n\n //Get type number\n function _getTypeNumber(content, ecl) {\n var length = _getUTF8Length(content);\n\n var type = 1;\n var limit = 0;\n for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n var table = QRCodeLimitLength[i];\n if (!table) {\n throw new Error(\"Content too long: expected \" + limit + \" but got \" + length);\n }\n\n switch (ecl) {\n case \"L\":\n limit = table[0];\n break;\n\n case \"M\":\n limit = table[1];\n break;\n\n case \"Q\":\n limit = table[2];\n break;\n\n case \"H\":\n limit = table[3];\n break;\n\n default:\n throw new Error(\"Unknwon error correction level: \" + ecl);\n }\n\n if (length <= limit) {\n break;\n }\n\n type++;\n }\n\n if (type > QRCodeLimitLength.length) {\n throw new Error(\"Content too long\");\n }\n\n return type;\n }\n\n //Gets text length\n function _getUTF8Length(content) {\n var result = encodeURI(content).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n return result.length + (result.length != content ? 3 : 0);\n }\n\n //Generate QR Code matrix\n var content = this.options.content;\n var type = _getTypeNumber(content, this.options.ecl);\n var ecl = _getErrorCorrectLevel(this.options.ecl);\n this.qrcode = new QRCodeModel(type, ecl);\n this.qrcode.addData(content);\n this.qrcode.make();\n}\n\n/** Generates QR Code as SVG image */\nQRCode.prototype.svg = function(opt) {\n var options = this.options || { };\n var modules = this.qrcode.modules;\n\n if (typeof opt == \"undefined\") {\n opt = { container: options.container || \"svg\" };\n }\n\n //Apply new lines and indents in SVG?\n var pretty = typeof options.pretty != \"undefined\" ? !!options.pretty : true;\n\n var indent = pretty ? ' ' : '';\n var EOL = pretty ? '\\r\\n' : '';\n var width = options.width;\n var height = options.height;\n var length = modules.length;\n var xsize = width / (length + 2 * options.padding);\n var ysize = height / (length + 2 * options.padding);\n\n //Join (union, merge) rectangles into one shape?\n var join = typeof options.join != \"undefined\" ? !!options.join : false;\n\n //Swap the X and Y modules, pull request #2\n var swap = typeof options.swap != \"undefined\" ? !!options.swap : false;\n\n //Apply declaration in SVG?\n var xmlDeclaration = typeof options.xmlDeclaration != \"undefined\" ? !!options.xmlDeclaration : true;\n\n //Populate with predefined shape instead of \"rect\" elements, thanks to @kkocdko\n var predefined = typeof options.predefined != \"undefined\" ? !!options.predefined : false;\n var defs = predefined ? indent + '' + EOL : '';\n\n //Background rectangle\n var bgrect = indent + '' + EOL;\n\n //Rectangles representing modules\n var modrect = '';\n var pathdata = '';\n\n for (var y = 0; y < length; y++) {\n for (var x = 0; x < length; x++) {\n var module = modules[x][y];\n if (module) {\n\n var px = (x * xsize + options.padding * xsize);\n var py = (y * ysize + options.padding * ysize);\n\n //Some users have had issues with the QR Code, thanks to @danioso for the solution\n if (swap) {\n var t = px;\n px = py;\n py = t;\n }\n\n if (join) {\n //Module as a part of svg path data, thanks to @danioso\n var w = xsize + px\n var h = ysize + py\n\n px = (Number.isInteger(px))? Number(px): px.toFixed(2);\n py = (Number.isInteger(py))? Number(py): py.toFixed(2);\n w = (Number.isInteger(w))? Number(w): w.toFixed(2);\n h = (Number.isInteger(h))? Number(h): h.toFixed(2);\n\n pathdata += ('M' + px + ',' + py + ' V' + h + ' H' + w + ' V' + py + ' H' + px + ' Z ');\n }\n else if (predefined) {\n //Module as a predefined shape, thanks to @kkocdko\n modrect += indent + '' + EOL;\n }\n else {\n //Module as rectangle element\n modrect += indent + '' + EOL;\n }\n }\n }\n }\n\n if (join) {\n modrect = indent + '';\n }\n let imgSvg = \"\";\n if(this.options.image !== undefined && this.options.image.svg){\n const imgWidth = width * this.options.image.width / 100;\n const imgHeight = height * this.options.image.height / 100;\n const imgX = (width/2) - imgWidth/2;\n const imgY = (height/2) - imgHeight/2;\n imgSvg += ``;\n imgSvg += this.options.image.svg + EOL;\n imgSvg += '';\n }\n\n var svg = \"\";\n switch (opt.container) {\n //Wrapped in SVG document\n case \"svg\":\n if (xmlDeclaration) {\n svg += '' + EOL;\n }\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n break;\n\n //Viewbox for responsive use in a browser, thanks to @danioso\n case \"svg-viewbox\":\n if (xmlDeclaration) {\n svg += '' + EOL;\n }\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n break;\n\n\n //Wrapped in group element\n case \"g\":\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n\n break;\n\n //Without a container\n default:\n svg += (defs + bgrect + modrect + imgSvg).replace(/^\\s+/, \"\"); //Clear indents on each line\n break;\n }\n\n return svg;\n};\n\nmodule.exports = QRCode;\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LIB_VERSION = void 0;\nexports.LIB_VERSION = \"3.6.3\";\n","export const version = \"abi/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray) {\n let abi: ReadonlyArray = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array = [ ];\n\n const dataTypes: Array = [ ];\n const dataValues: Array = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array = [];\n let nonIndexed: Array = [];\n let dynamic: Array = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-provider/5.7.0\";\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","export const version = \"abstract-signer/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","export const version = \"address/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * 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\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 */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","export const version = \"bignumber/5.7.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bytes/5.7.0\";\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise;\n gasPrice?: BigNumberish | Promise;\n maxFeePerGas?: BigNumberish | Promise;\n maxPriorityFeePerGas?: BigNumberish | Promise;\n nonce?: BigNumberish | Promise;\n type?: number;\n accessList?: AccessListish;\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise;\n from?: string | Promise;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array>;\n};\n\n\nexport type ContractFunction = (...args: Array) => Promise;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise;\n getTransaction: () => Promise;\n getTransactionReceipt: () => Promise;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise): Promise {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array): Promise {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array): Promise {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return function(...args: Array): Promise {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array): Promise {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array): Promise {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return async function(...args: Array): Promise {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction };\n readonly populateTransaction: { [ name: string ]: ContractFunction };\n\n readonly filters: { [ name: string ]: (...args: Array) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((this)[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((this)[name] == null) {\n defineReadOnly(this, name, (this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n\n fallback(overrides?: TransactionRequest): Promise {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (filter).blockHash = fromBlockOrBlockhash;\n } else {\n (filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array): Promise {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return ((this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n","export const version = \"contracts/5.7.0\";\n","export const version = \"hash/5.7.0\";\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\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 deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * 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 all\n * 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 FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\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 deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * 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 all\n * 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 FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\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 deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * 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 all\n * 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 FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n readonly locale: string;\n\n constructor(locale: string) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n\n abstract getWord(index: number): string;\n abstract getWordIndex(word: string): number;\n\n // Subclasses may override this\n split(mnemonic: string): Array {\n return mnemonic.toLowerCase().split(/ +/g)\n }\n\n // Subclasses may override this\n join(words: Array): string {\n return words.join(\" \");\n }\n\n static check(wordlist: Wordlist): string {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n\n static register(lang: Wordlist, name?: string): void {\n if (!name) { name = lang.locale; }\n\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = (window as any)\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n } catch (error) { }\n }\n }\n\n}\n\n","export const version = \"wordlists/5.7.0\";\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n","\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\n// Browser; only include English by default\n\nimport { Wordlist } from \"./wordlist\";\n\nimport { langEn as en } from \"./lang-en\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n en: en\n}\n","\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n\n if (typeof(wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n\n return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n readonly phrase: string;\n readonly path: string;\n readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n readonly privateKey: string;\n readonly publicKey: string;\n\n readonly fingerprint: string;\n readonly parentFingerprint: string;\n\n readonly address: string;\n\n readonly mnemonic?: Mnemonic;\n readonly path: string;\n\n readonly chainCode: string;\n\n readonly index: number;\n readonly depth: number;\n\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n } else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n defineReadOnly(this, \"chainCode\", chainCode);\n\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n\n } else if (typeof(mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n\n } else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n\n get extendedKey(): string {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n\n if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n ]));\n }\n\n neuter(): HDNode {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n\n private _derive(index: number): HDNode {\n if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n // Base path\n let path = this.path;\n if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n const data = new Uint8Array(37);\n\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n\n // Hardened path\n if (path) { path += \"'\"; }\n\n } else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n // The private key\n let ki: string = null\n\n // The public key\n let Ki: string = null;\n\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n } else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n\n let mnemonicOrPath: Mnemonic | string = path;\n\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n\n derivePath(path: string): HDNode {\n const components = path.split(\"/\");\n\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n\n if (components[0] === \"m\") { components.shift(); }\n\n let result: HDNode = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(HardenedBit + index);\n } else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(index);\n } else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n\n return result;\n }\n\n\n static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n const seedArray: Uint8Array = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n\n static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n\n static fromSeed(seed: BytesLike): HDNode {\n return HDNode._fromSeed(seed, null);\n }\n\n static fromExtendedKey(extendedKey: string): HDNode {\n const bytes = Base58.decode(extendedKey);\n\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\": case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n // Private Key\n case \"0x0488ade4\": case \"0x04358394 \":\n if (key[0] !== 0) { break; }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n if (!password) { password = \"\"; }\n\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n logger.checkNormalize();\n\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n\n const entropyBits = 32 * words.length / 3;\n\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n entropy = arrayify(entropy);\n\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n\n const indices: Array = [ 0 ];\n\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n\n remainingBits -= 8;\n\n // This byte will complete an 11-bit index\n } else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n remainingBits += 3;\n }\n }\n\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n return wordlist.join(indices.map((index) => (wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getAccountPath(index: number): string {\n if (typeof(index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${ index }'/0/0`;\n}\n","export const version = \"hdnode/5.7.0\";\n","export const version = \"json-wallets/5.7.0\";\n","\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n address: string;\n privateKey: string;\n\n _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: string;\n readonly path?: string;\n\n readonly _isCrowdsaleAccount: boolean;\n\n isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n const data = JSON.parse(json);\n\n password = getPassword(password);\n\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n\n const seedHexBytes = toUtf8Bytes(seedHex);\n\n const privateKey = keccak256(seedHexBytes);\n\n return new CrowdsaleAccount ({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n\n","\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) { progressCallback(0); }\n const account = decryptCrowdsale(json, password)\n if (progressCallback) { progressCallback(1); }\n return Promise.resolve(account);\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password)\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n\n throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n decryptCrowdsale,\n\n decryptKeystore,\n decryptKeystoreSync,\n encryptKeystore,\n\n isCrowdsaleWallet,\n isKeystoreWallet,\n getJsonWalletAddress,\n\n decryptJsonWallet,\n decryptJsonWalletSync,\n\n ProgressCallback,\n EncryptOptions,\n};\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n } catch (error) { return null; }\n }\n\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n } catch (error) { return null; }\n }\n\n return null;\n}\n\n","\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n address: string;\n privateKey: string;\n mnemonic?: Mnemonic;\n\n _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: Mnemonic;\n\n readonly _isKeystoreAccount: boolean;\n\n isKeystoreAccount(value: any): value is KeystoreAccount {\n return !!(value && value._isKeystoreAccount);\n }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n iv?: BytesLike;\n entropy?: BytesLike;\n client?: string;\n salt?: BytesLike;\n uuid?: string;\n scrypt?: {\n N?: number;\n r?: number;\n p?: number;\n }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n const counter = new aes.Counter(iv);\n\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n\n return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n\n const mnemonicKey = key.slice(32, 64);\n\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n\n const account: _KeystoreAccount = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n\n account.mnemonic = node.mnemonic;\n\n } catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n\n return new KeystoreAccount(account);\n}\n\ntype ScryptFunc = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func, scryptFunc: ScryptFunc, progressCallback?: ProgressCallback): T {\n const passwordBytes = getPassword(password);\n\n const kdf = searchPath(data, \"crypto/kdf\");\n\n if (kdf && typeof(kdf) === \"string\") {\n const throwError = function(name: string, value: any): never {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n }\n\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n // Check for all required parameters\n if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n let prfFunc: string = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n } else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n } else {\n throwError(\"prf\", prf);\n }\n\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n const data = JSON.parse(json);\n\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n const data = JSON.parse(json);\n\n const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise {\n\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n\n } catch (e) {\n return Promise.reject(e);\n }\n\n // The options are optional, so adjust the call as needed\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) { options = {}; }\n\n const privateKey: Uint8Array = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n\n let client = options.client;\n if (!client) { client = \"ethers.js\"; }\n\n // Check/generate the salt\n let salt: Uint8Array = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n } else {\n salt = randomBytes(32);;\n }\n\n // Override initialization vector\n let iv: Uint8Array = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n } else {\n iv = randomBytes(16);\n }\n\n // Override the uuid\n let uuidRandom: Uint8Array = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n } else {\n uuidRandom = randomBytes(16);\n }\n\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) { N = options.scrypt.N; }\n if (options.scrypt.r) { r = options.scrypt.r; }\n if (options.scrypt.p) { p = options.scrypt.p; }\n }\n\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]))\n\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data: { [key: string]: any } = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\"\n );\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n\n return JSON.stringify(data);\n });\n}\n","\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n value = String(value);\n while (value.length < length) { value = '0' + value; }\n return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n if (typeof(password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n let currentChild = object;\n\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n\n // Now check this child...\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = arrayify(randomBytes);\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","export const version = \"networks/5.7.1\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, SupportedAlgorithm } from \"@ethersproject/sha2\";\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n password = arrayify(password);\n salt = arrayify(salt);\n let hLen;\n let l = 1;\n const DK = new Uint8Array(keylen)\n const block1 = new Uint8Array(salt.length + 4)\n block1.set(salt);\n //salt.copy(block1, 0, 0, salt.length)\n\n let r: number;\n let T: Uint8Array;\n\n for (let i = 1; i <= l; i++) {\n //block1.writeUInt32BE(i, salt.length)\n block1[salt.length] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = i & 0xff;\n\n //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(hashAlgorithm, password, block1));\n\n if (!hLen) {\n hLen = U.length\n T = new Uint8Array(hLen)\n l = Math.ceil(keylen / hLen)\n r = keylen - (l - 1) * hLen\n }\n\n //U.copy(T, 0, 0, hLen)\n T.set(U);\n\n\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n\n const destPos = (i - 1) * hLen\n const len = (i === l ? r : hLen)\n //T.copy(DK, destPos, 0, len)\n DK.set(arrayify(T).slice(0, len), destPos);\n }\n\n return hexlify(DK)\n}\n\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","export const version = \"providers/5.7.2\";\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\"\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n","\nimport { Network } from \"@ethersproject/networks\";\n\nimport { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport type { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\n\nfunction getHost(name: string): string {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\n\nexport class AnkrProvider extends UrlJsonRpcProvider {\n readonly apiKey: string;\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n if (apiKey == null) { apiKey = defaultApiKey; }\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n","\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record {\n const result: Record = { };\n for (let key in transaction) {\n if ((transaction)[key] == null) { continue; }\n let value = (transaction)[key];\n if (key === \"type\" && value === 0) { continue; }\n\n // Quantity-types require no leading zero, unless 0\n if (({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n value = hexValue(hexlify(value));\n } else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n }).join(\",\") + \"]\";\n } else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || typeof(result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (result).status == 0 && (result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n if (isHexString(data)) { return data; }\n\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string | null;\n\n constructor(network?: Networkish, apiKey?: string) {\n super(network);\n\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n\n getBaseUrl(): string {\n switch(this.network ? this.network.name: \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n\n getUrl(module: string, params: Record): string {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${ key }=${ value }`\n }\n return accum\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n }\n\n getPostUrl(): string {\n return `${ this.baseUrl }/api`;\n }\n\n getPostData(module: string, params: Record): Record {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n\n async fetch(module: string, params: Record, post?: boolean): Promise {\n const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params): null);\n const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n }\n\n async detectNetwork(): Promise {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise {\n\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\": \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n const args: Record = { action: \"getLogs\" }\n\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n\n const logs: Array = await this.fetch(\"logs\", args);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n async getHistory(addressOrName: string | Promise, startBlock?: BlockTag, endBlock?: BlockTag): Promise> {\n const params = {\n action: \"txlist\",\n address: (await this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0: startBlock),\n endblock: ((endBlock == null) ? 99999999: endBlock),\n sort: \"asc\"\n };\n\n const result = await this.fetch(\"account\", params);\n\n return result.map((tx: any) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n return item;\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey == null);\n }\n}\n","\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; lower values are used first (higher priority)\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster result.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise\n getPromise: () => Promise,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = >(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array) => any {\n return function(configs: Array): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise {\n const provider = (config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((provider).getEtherPrice) {\n return (provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array, quorum?: number) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise = checkNetworks(providerConfigs.map((c) => ((c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = ((c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = (tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n","\"use strict\";\n\nconst IpcProvider: any = null;\n\nexport {\n IpcProvider\n};\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n","/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\n\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n readonly loadBalancer: boolean;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n\n } else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n\n } else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n\n const connection: ConnectionInfo = { headers: { }, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n","\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider, FallbackProviderConfig } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Networkish, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\": case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\": case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concrete Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n JsonRpcBatchProvider,\n NodesmithProvider,\n PocketProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n FallbackProviderConfig,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n WS = (WebSocket as any);\n if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n const logger = new Logger(version);\n WS = function() {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array) => any) | null;\n onmessage: ((...args: Array) => any) | null;\n onerror: ((...args: Array) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array): Promise {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array, processFunc: (result: any) => void): Promise {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Debugging line for testing browser lib in node\n//const window = { crypto: { getRandomValues: () => { } } };\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal(): any {\n if (typeof self !== 'undefined') { return self; }\n if (typeof window !== 'undefined') { return window; }\n if (typeof global !== 'undefined') { return global; }\n throw new Error('unable to locate global object');\n};\n\nconst anyGlobal = getGlobal();\n\nlet crypto: any = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n\n logger.warn(\"WARNING: Missing strong random number source\");\n\n crypto = {\n getRandomValues: function(buffer: Uint8Array): Uint8Array {\n return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"crypto.getRandomValues\"\n });\n }\n };\n}\n\nexport function randomBytes(length: number): Uint8Array {\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return arrayify(result);\n};\n","export const version = \"random/5.7.0\";\n","\"use strict\";\n\nexport function shuffled(array: Array): Array {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"rlp/5.7.0\";\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","export const version = \"sha2/5.7.0\";\n","export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\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 utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"signing-key/5.7.0\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch(type) {\n case \"address\":\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return arrayify(value);\n case \"bool\":\n value = (value ? \"0x01\": \"0x00\");\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\")\n\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n logger.throwArgumentError(\"invalid number type\", \"type\", type)\n }\n\n if (isArray) { size = 256; }\n\n value = BigNumber.from(value).toTwos(size);\n\n return zeroPad(value, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes type\", \"type\", type)\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${ type }`, \"value\", value)\n }\n if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${ type }`, \"value\", value)\n }\n const result: Array = [];\n value.forEach(function(value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", type)\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: ReadonlyArray, values: ReadonlyArray) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values)\n }\n const tight: Array = [];\n types.forEach(function(type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\nexport function keccak256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashSha256(pack(types, values));\n}\n","export const version = \"solidity/5.7.0\";\n","\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n\n // Check we have room for null-termination\n if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n // Zero-pad (implicitly null-terminates)\n return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n const data = arrayify(bytes);\n\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) { length--; }\n\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n\n","\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n l: number, // Lo value\n h: number, // High value (less the lo)\n d?: number, // Delta/stride (default: 1)\n s?: number, // Shift (default: 1)\n e?: Array // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array };\n\nfunction bytes2(data: string): Array {\n if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array): Table {\n if (!func) {\n func = function(value: string) { return [ parseInt(value, 16) ]; }\n }\n\n let lo = 0;\n\n let result: Table = { };\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n\n return result;\n}\n\nfunction createRangeTable(data: string): Array {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n } else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\n\nfunction matchMap(value: number, ranges: Array): Ranged {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n return range;\n }\n }\n return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [ 23 ], l: 127 },\n { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n { h: 26, s: 32, e: [ 17 ], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [ 17 ], l: 56 },\n { h: 24, s: -119601, e: [ 17 ], l: 58 },\n { h: 24, s: -119659, e: [ 17 ], l: 58 },\n { h: 24, s: -119717, e: [ 17 ], l: 58 },\n { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array>): Array {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) { return [ codepoint + range.s ]; }\n\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) { return codes; }\n\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) { return [ codepoint + shift[0] ]; }\n\n let complex = Table_B_2_complex[codepoint];\n if (complex) { return complex; }\n\n return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) { return codesTableB2; }\n\n // No Substitution\n return [ code ];\n }));\n\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n\n // IDNA extras\n let name = _toUtf8String(codes);\n\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n\n return name;\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","export const version = \"strings/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","export const version = \"transactions/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n","export const version = \"units/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n readonly address: string;\n readonly provider: Provider;\n\n // Wrapping the _signingKey and _mnemonic in a getter function prevents\n // leaking the private key in console.log; still, be careful! :)\n readonly _signingKey: () => SigningKey;\n readonly _mnemonic: () => Mnemonic;\n\n constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n super();\n\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => (\n {\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }\n ));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n } else {\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n }\n\n\n } else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => (privateKey));\n\n } else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof(privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n get mnemonic(): Mnemonic { return this._mnemonic(); }\n get privateKey(): string { return this._signingKey().privateKey; }\n get publicKey(): string { return this._signingKey().publicKey; }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n connect(provider: Provider): Wallet {\n return new Wallet(this, provider);\n }\n\n signTransaction(transaction: TransactionRequest): Promise {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n\n const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n\n async signMessage(message: Bytes | string): Promise {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n }\n\n encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise {\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n\n if (progressCallback && typeof(progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n\n if (!options) { options = {}; }\n\n return encryptKeystore(this, password, options, progressCallback);\n }\n\n\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options?: any): Wallet {\n let entropy: Uint8Array = randomBytes(16);\n\n if (!options) { options = { }; }\n\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n }\n\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n\n static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n\n static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n\n static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n if (!path) { path = defaultPath; }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record>, value: Record, signature: SignatureLike): string {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n","export const version = \"wallet/5.7.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n const request: RequestInit = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n };\n\n if (options.skipFetchSetup !== true) {\n request.mode = \"cors\"; // no-cors, cors, *same-origin\n request.cache = \"no-cache\"; // *default, no-cache, reload, force-cache, only-if-cached\n request.credentials = \"same-origin\"; // include, *same-origin, omit\n request.redirect = \"follow\"; // manual, *follow, error\n request.referrer = \"client\"; // no-referrer, *client\n };\n\n if (options.fetchOptions != null) {\n const opts = options.fetchOptions;\n if (opts.mode) { request.mode = (opts.mode); }\n if (opts.cache) { request.cache = (opts.cache); }\n if (opts.credentials) { request.credentials = (opts.credentials); }\n if (opts.redirect) { request.redirect = (opts.redirect); }\n if (opts.referrer) { request.referrer = opts.referrer; }\n }\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array>(((response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","export const version = \"web/5.7.1\";\n",null,"// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiCheck = function FiCheck (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"20 6 9 17 4 12\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiChevronDown = function FiChevronDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"6 9 12 15 18 9\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiCopy = function FiCopy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"9\",\"width\":\"13\",\"height\":\"13\",\"rx\":\"2\",\"ry\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiLock = function FiLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"11\",\"width\":\"18\",\"height\":\"11\",\"rx\":\"2\",\"ry\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7 11V7a5 5 0 0 1 10 0v4\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiShuffle = function FiShuffle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"polyline\",\"attr\":{\"points\":\"16 3 21 3 21 8\"}},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"20\",\"x2\":\"21\",\"y2\":\"3\"}},{\"tag\":\"polyline\",\"attr\":{\"points\":\"21 16 21 21 16 21\"}},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"15\",\"x2\":\"21\",\"y2\":\"21\"}},{\"tag\":\"line\",\"attr\":{\"x1\":\"4\",\"y1\":\"4\",\"x2\":\"9\",\"y2\":\"9\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiWifi = function FiWifi (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 12.55a11 11 0 0 1 14.08 0\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M1.42 9a16 16 0 0 1 21.16 0\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M8.53 16.11a6 6 0 0 1 6.95 0\"}},{\"tag\":\"line\",\"attr\":{\"x1\":\"12\",\"y1\":\"20\",\"x2\":\"12.01\",\"y2\":\"20\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FiXCircle = function FiXCircle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"}},{\"tag\":\"line\",\"attr\":{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"9\",\"y2\":\"15\"}},{\"tag\":\"line\",\"attr\":{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"15\",\"y2\":\"15\"}}]})(props);\n};\n","export var IconsManifest = [\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/refactoringui/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"CC BY 4.0 License\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n }\n]","import React from 'react';\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","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\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport React from 'react';\nimport { IconContext, DefaultContext } from './iconContext';\n\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\n\nexport function GenIcon(data) {\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function (conf) {\n var attr = props.attr,\n size = props.size,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + ' ' : '') + props.className;\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign(__assign({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\n}","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","import BN from 'bn.js';\nimport { BigNumber } from 'ethers';\nimport { z } from 'zod';\n\nconst DEFAULT_API_KEY = \"c6634ad2d97b74baf15ff556016830c251050e6c36b9da508ce3ec80095d3dc1\";\nfunction getRpcUrl(network) {\n let apikey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_API_KEY;\n return `https://${network}.rpc.thirdweb.com/${apikey}`;\n}\n\n/**\n * @internal\n */\nconst isBrowser = () => typeof window !== \"undefined\";\n/**\n * @internal\n */\nconst FileOrBufferUnionSchema = isBrowser() ? z.instanceof(File) : z.instanceof(Buffer); // @fixme, this is a hack to make browser happy for now\n\n/**\n * @internal\n */\nconst FileOrBufferSchema = z.union([FileOrBufferUnionSchema, z.object({\n data: z.union([FileOrBufferUnionSchema, z.string()]),\n name: z.string()\n})]);\n\n/**\n * @internal\n */\nconst FileOrBufferOrStringSchema = z.union([FileOrBufferSchema, z.string()]);\nconst MAX_BPS = 10000;\nconst BytesLikeSchema = z.union([z.array(z.number()), z.string()]);\nconst BigNumberSchema = z.union([z.string(), z.number(), z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n}), z.custom(data => {\n return BN.isBN(data);\n})]).transform(arg => {\n let str = BN.isBN(arg) ? new BN(arg).toString() : BigNumber.from(arg).toString();\n return BigNumber.from(str);\n});\nBigNumberSchema.transform(arg => arg.toString());\nconst BigNumberTransformSchema = z.union([z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n}), z.custom(data => {\n return BN.isBN(data);\n})]).transform(arg => {\n if (BN.isBN(arg)) {\n return new BN(arg).toString();\n }\n return BigNumber.from(arg).toString();\n});\nconst BasisPointsSchema = z.number().max(MAX_BPS, \"Cannot exceed 100%\").min(0, \"Cannot be below 0%\");\nconst PercentSchema = z.number().max(100, \"Cannot exceed 100%\").min(0, \"Cannot be below 0%\");\nconst HexColor = z.union([z.string().regex(/^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, \"Invalid hex color\"), z.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, \"Invalid hex color\").transform(val => val.replace(\"#\", \"\")), z.string().length(0)]);\nconst AmountSchema = z.union([z.string().regex(/^([0-9]+\\.?[0-9]*|\\.[0-9]+)$/, \"Invalid amount\"), z.number().min(0, \"Amount cannot be negative\")]).transform(arg => typeof arg === \"number\" ? arg.toString() : arg);\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst QuantitySchema = z.union([AmountSchema, z.literal(\"unlimited\")]).default(\"unlimited\");\nconst RawDateSchema = z.date().transform(i => {\n return BigNumber.from(Math.floor(i.getTime() / 1000));\n});\n\n/**\n * Default to now\n */\nRawDateSchema.default(new Date(0));\n\n/**\n * Default to 10 years from now\n */\nRawDateSchema.default(new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 10));\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nconst PropertiesInput = z.object({}).catchall(z.union([BigNumberTransformSchema, z.unknown()]));\n\n/**\n * @internal\n */\nconst OptionalPropertiesInput = z.union([z.array(PropertiesInput), PropertiesInput]).optional();\n\n/**\n * @internal\n */\nconst CommonNFTInput = z.object({\n name: z.union([z.string(), z.number()]).optional(),\n description: z.string().nullable().optional(),\n image: FileOrBufferOrStringSchema.nullable().optional(),\n external_url: FileOrBufferOrStringSchema.nullable().optional(),\n animation_url: FileOrBufferOrStringSchema.optional(),\n background_color: HexColor.optional(),\n properties: OptionalPropertiesInput,\n attributes: OptionalPropertiesInput\n}).catchall(z.union([BigNumberTransformSchema, z.unknown()]));\n\n/**\n * @internal\n */\nconst NFTInputOrUriSchema = z.union([CommonNFTInput, z.string()]);\n\n/**\n * @internal\n */\nconst CommonNFTOutput = CommonNFTInput.extend({\n id: z.string(),\n uri: z.string(),\n image: z.string().nullable().optional(),\n external_url: z.string().nullable().optional(),\n animation_url: z.string().nullable().optional()\n});\n\n/**\n * @public\n */\n\n/**\n * @internal\n */\nconst DEFAULT_QUERY_ALL_COUNT = 100;\nconst QueryAllParamsSchema = z.object({\n start: z.number().default(0),\n count: z.number().default(DEFAULT_QUERY_ALL_COUNT)\n}).default({\n start: 0,\n count: DEFAULT_QUERY_ALL_COUNT\n});\n\n/**\n * Pagination Parameters\n * @public\n */\n\nexport { AmountSchema as A, BytesLikeSchema as B, CommonNFTOutput as C, DEFAULT_QUERY_ALL_COUNT as D, FileOrBufferOrStringSchema as F, MAX_BPS as M, NFTInputOrUriSchema as N, PercentSchema as P, QuantitySchema as Q, _defineProperty as _, BasisPointsSchema as a, CommonNFTInput as b, QueryAllParamsSchema as c, getRpcUrl as g };\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()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n _pendingBatchAggregator: NodeJS.Timer;\n _pendingBatch: Array<{\n request: { method: string, params: Array, id: number, jsonrpc: \"2.0\" },\n resolve: (result: any) => void,\n reject: (error: Error) => void\n }>;\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n if (this._pendingBatch == null) {\n this._pendingBatch = [ ];\n }\n\n const inflightRequest: any = { request, resolve: null, reject: null };\n\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n this._pendingBatch.push(inflightRequest);\n\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n (error).code = payload.error.code;\n (error).data = payload.error.data;\n inflightRequest.reject(error);\n } else {\n inflightRequest.resolve(payload.result);\n }\n });\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n\n }, 10);\n }\n\n return promise;\n }\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\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 offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { z } from 'zod';\nimport { _ as _defineProperty, g as getRpcUrl, Q as QuantitySchema, A as AmountSchema, B as BytesLikeSchema, N as NFTInputOrUriSchema, a as BasisPointsSchema, F as FileOrBufferOrStringSchema, P as PercentSchema, C as CommonNFTOutput, b as CommonNFTInput, D as DEFAULT_QUERY_ALL_COUNT, M as MAX_BPS } from './QueryParams-bc2daded.esm.js';\nimport { constants, utils, providers, ethers, BigNumber, Contract, Signer } from 'ethers';\nimport ERC165Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC165.json';\nimport Erc721Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC721.json';\nimport Erc1155Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155.json';\nimport invariant from 'tiny-invariant';\nimport IBurnableERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC20.json';\nimport IDrop from '@thirdweb-dev/contracts-js/dist/abis/IDrop.json';\nimport DropERC20_V2Abi from '@thirdweb-dev/contracts-js/dist/abis/IDropERC20_V2.json';\nimport IDropSinglePhase from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase.json';\nimport IDropSinglePhaseV1 from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase_V1.json';\nimport ERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/IERC20.json';\nimport IMintableERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/IMintableERC20.json';\nimport MulticallAbi from '@thirdweb-dev/contracts-js/dist/abis/IMulticall.json';\nimport ISignatureMintERC20Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC20.json';\nimport IBurnableERC721Abi from '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC721.json';\nimport IClaimableERC721 from '@thirdweb-dev/contracts-js/dist/abis/IClaimableERC721.json';\nimport DelayedRevealAbi from '@thirdweb-dev/contracts-js/dist/abis/IDelayedReveal.json';\nimport DropERC721_V3Abi from '@thirdweb-dev/contracts-js/dist/abis/IDropERC721_V3.json';\nimport Erc721EnumerableAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721Enumerable.json';\nimport Erc721SupplyAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721Supply.json';\nimport ILazyMintAbi from '@thirdweb-dev/contracts-js/dist/abis/ILazyMint.json';\nimport IMintableERC721Abi from '@thirdweb-dev/contracts-js/dist/abis/IMintableERC721.json';\nimport SignatureMintERC721Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC721.json';\nimport SignatureMintERC721_V1Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC721_V1.json';\nimport TieredDropAbi from '@thirdweb-dev/contracts-js/dist/abis/LazyMintWithTier.json';\nimport IBurnableERC1155Abi from '@thirdweb-dev/contracts-js/dist/abis/IBurnableERC1155.json';\nimport IClaimableERC1155 from '@thirdweb-dev/contracts-js/dist/abis/IClaimableERC1155.json';\nimport IDropMultiPhase1155 from '@thirdweb-dev/contracts-js/dist/abis/IDrop1155.json';\nimport DropERC1155_V2Abi from '@thirdweb-dev/contracts-js/dist/abis/IDropERC1155_V2.json';\nimport IDropSinglePhase1155 from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase1155.json';\nimport IDropSinglePhase1155_V1 from '@thirdweb-dev/contracts-js/dist/abis/IDropSinglePhase1155_V1.json';\nimport Erc1155EnumerableAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155Enumerable.json';\nimport IMintableERC1155Abi from '@thirdweb-dev/contracts-js/dist/abis/IMintableERC1155.json';\nimport ISignatureMintERC1155Abi from '@thirdweb-dev/contracts-js/dist/abis/ISignatureMintERC1155.json';\nimport IERC2771ContextAbi from '@thirdweb-dev/contracts-js/dist/abis/ERC2771Context.json';\nimport IAppURI from '@thirdweb-dev/contracts-js/dist/abis/IAppURI.json';\nimport IContractMetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IContractMetadata.json';\nimport IDirectListingsAbi from '@thirdweb-dev/contracts-js/dist/abis/IDirectListings.json';\nimport IEnglishAuctionsAbi from '@thirdweb-dev/contracts-js/dist/abis/IEnglishAuctions.json';\nimport IOffersAbi from '@thirdweb-dev/contracts-js/dist/abis/IOffers.json';\nimport IPackVRFAbi from '@thirdweb-dev/contracts-js/dist/abis/IPackVRFDirect.json';\nimport IPermissionsAbi from '@thirdweb-dev/contracts-js/dist/abis/IPermissions.json';\nimport IPermissionsEnumerableAbi from '@thirdweb-dev/contracts-js/dist/abis/IPermissionsEnumerable.json';\nimport IThirdwebPlatformFeeAbi from '@thirdweb-dev/contracts-js/dist/abis/IPlatformFee.json';\nimport IThirdwebPrimarySaleAbi from '@thirdweb-dev/contracts-js/dist/abis/IPrimarySale.json';\nimport IRouterAbi from '@thirdweb-dev/contracts-js/dist/abis/IRouter.json';\nimport IThirdwebRoyaltyAbi from '@thirdweb-dev/contracts-js/dist/abis/IRoyalty.json';\nimport IOwnableAbi from '@thirdweb-dev/contracts-js/dist/abis/Ownable.json';\nimport fetch$1 from 'cross-fetch';\nimport EventEmitter, { EventEmitter as EventEmitter$1 } from 'eventemitter3';\nimport ForwarderABI from '@thirdweb-dev/contracts-js/dist/abis/Forwarder.json';\nimport { ThirdwebStorage } from '@thirdweb-dev/storage';\nimport ERC20MetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC20Metadata.json';\nimport RouterABI from '@thirdweb-dev/contracts-js/dist/abis/Router.json';\nimport IThirdwebContractABI from '@thirdweb-dev/contracts-js/dist/abis/IThirdwebContract.json';\nimport { MerkleTree } from 'merkletreejs';\nimport deepEqual from 'fast-deep-equal';\nimport { v4 } from 'uuid';\nimport ERC721MetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC721Metadata.json';\nimport ERC1155MetadataAbi from '@thirdweb-dev/contracts-js/dist/abis/IERC1155Metadata.json';\nimport DeprecatedAbi from '@thirdweb-dev/contracts-js/dist/abis/IDelayedRevealDeprecated.json';\nimport TWFactoryAbi from '@thirdweb-dev/contracts-js/dist/abis/TWFactory.json';\nimport TWRegistryABI$1 from '@thirdweb-dev/contracts-js/dist/abis/TWRegistry.json';\nimport ContractPublisherAbi from '@thirdweb-dev/contracts-js/dist/abis/ContractPublisher.json';\nimport TWRegistryABI from '@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryLogic.json';\nimport TWRegistryRouterABI from '@thirdweb-dev/contracts-js/dist/abis/TWMultichainRegistryRouter.json';\nimport bs58 from 'bs58';\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) {\n _checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\n\nfunction _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return _classApplyDescriptorGet(receiver, descriptor);\n}\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n _classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\n\n/**\n * @public\n */\nlet ChainId;\n\n/**\n * @public\n */\n(function (ChainId) {\n ChainId[ChainId[\"Mainnet\"] = 1] = \"Mainnet\";\n ChainId[ChainId[\"Goerli\"] = 5] = \"Goerli\";\n ChainId[ChainId[\"Polygon\"] = 137] = \"Polygon\";\n ChainId[ChainId[\"Mumbai\"] = 80001] = \"Mumbai\";\n ChainId[ChainId[\"Localhost\"] = 1337] = \"Localhost\";\n ChainId[ChainId[\"Hardhat\"] = 31337] = \"Hardhat\";\n ChainId[ChainId[\"Fantom\"] = 250] = \"Fantom\";\n ChainId[ChainId[\"FantomTestnet\"] = 4002] = \"FantomTestnet\";\n ChainId[ChainId[\"Avalanche\"] = 43114] = \"Avalanche\";\n ChainId[ChainId[\"AvalancheFujiTestnet\"] = 43113] = \"AvalancheFujiTestnet\";\n ChainId[ChainId[\"Optimism\"] = 10] = \"Optimism\";\n ChainId[ChainId[\"OptimismGoerli\"] = 420] = \"OptimismGoerli\";\n ChainId[ChainId[\"Arbitrum\"] = 42161] = \"Arbitrum\";\n ChainId[ChainId[\"ArbitrumGoerli\"] = 421613] = \"ArbitrumGoerli\";\n ChainId[ChainId[\"BinanceSmartChainMainnet\"] = 56] = \"BinanceSmartChainMainnet\";\n ChainId[ChainId[\"BinanceSmartChainTestnet\"] = 97] = \"BinanceSmartChainTestnet\";\n})(ChainId || (ChainId = {}));\n/**\n * @public\n */\nconst SUPPORTED_CHAIN_IDS = [ChainId.Mainnet, ChainId.Goerli, ChainId.Polygon, ChainId.Mumbai, ChainId.Fantom, ChainId.FantomTestnet, ChainId.Avalanche, ChainId.AvalancheFujiTestnet, ChainId.Optimism, ChainId.OptimismGoerli, ChainId.Arbitrum, ChainId.ArbitrumGoerli, ChainId.BinanceSmartChainMainnet, ChainId.BinanceSmartChainTestnet];\n\n/**\n * @internal\n */\nconst OZ_DEFENDER_FORWARDER_ADDRESS = \"0xc82BbE41f2cF04e3a8efA18F7032BDD7f6d98a81\";\nconst TWRegistry_address = \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\";\nconst TWFactory_address = \"0x5DBC7B840baa9daBcBe9D2492E45D7244B54A2A0\";\nconst ContractPublisher_address = \"0x664244560eBa21Bf82d7150C791bE1AbcD5B4cd7\"; // Polygon only\nconst MultichainRegistry_address = \"0xcdAD8FA86e18538aC207872E8ff3536501431B73\"; // Polygon only\n\n/**\n * @internal\n */\nconst CONTRACT_ADDRESSES = {\n [ChainId.Mainnet]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0x76ce2CB1Ae48Fa067f4fb8c5f803111AE0B24BEA\",\n biconomyForwarder: \"0x84a0856b038eaAd1cC7E297cF34A7e72685A8693\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.Goerli]: {\n openzeppelinForwarder: \"0x5001A14CA6163143316a7C614e30e6041033Ac20\",\n openzeppelinForwarderEOA: \"0xe73c50cB9c5B378627ff625BB6e6725A4A5D65d2\",\n biconomyForwarder: \"0xE041608922d06a4F26C0d4c27d8bCD01daf1f792\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0xB1Bd9d7942A250BA2Dce27DD601F2ED4211A60C4\"\n },\n [ChainId.Polygon]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0x4f247c69184ad61036EC2Bb3213b69F10FbEDe1F\",\n biconomyForwarder: \"0x86C80a8aa58e0A4fa09A69624c31Ab2a6CAD56b8\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x308473Be900F4185A56587dE54bDFF5E8f7a6AE7\"\n },\n [ChainId.Mumbai]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xb1A2883fc4d287d9cB8Dbb96cFF60C76BEf2D250\",\n biconomyForwarder: \"0x9399BB24DBB5C4b782C70c2969F58716Ebbd6a3b\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x3F17972CB27506eb4a6a3D59659e0B57a43fd16C\"\n },\n [ChainId.Avalanche]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xb1A2883fc4d287d9cB8Dbb96cFF60C76BEf2D250\",\n biconomyForwarder: \"0x64CD353384109423a966dCd3Aa30D884C9b2E057\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.AvalancheFujiTestnet]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xe73c50cB9c5B378627ff625BB6e6725A4A5D65d2\",\n biconomyForwarder: \"0x6271Ca63D30507f2Dcbf99B52787032506D75BBF\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x3E6eE864f850F5e5A98bc950B68E181Cf4010F23\"\n },\n [ChainId.Fantom]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0xb1A2883fc4d287d9cB8Dbb96cFF60C76BEf2D250\",\n biconomyForwarder: \"0x64CD353384109423a966dCd3Aa30D884C9b2E057\",\n twFactory: \"0x97EA0Fcc552D5A8Fb5e9101316AAd0D62Ea0876B\",\n twRegistry: TWRegistry_address,\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.FantomTestnet]: {\n openzeppelinForwarder: OZ_DEFENDER_FORWARDER_ADDRESS,\n openzeppelinForwarderEOA: \"0x42D3048b595B6e1c28a588d70366CcC2AA4dB47b\",\n biconomyForwarder: \"0x69FB8Dca8067A5D38703b9e8b39cf2D51473E4b4\",\n twFactory: TWFactory_address,\n twRegistry: TWRegistry_address,\n twBYOCRegistry: \"0x3E6eE864f850F5e5A98bc950B68E181Cf4010F23\"\n },\n [ChainId.Arbitrum]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x4f247c69184ad61036EC2Bb3213b69F10FbEDe1F\",\n biconomyForwarder: \"0xfe0fa3C06d03bDC7fb49c892BbB39113B534fB57\",\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\",\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.ArbitrumGoerli]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x119704314Ef304EaAAE4b3c7C9ABd59272A28310\",\n biconomyForwarder: constants.AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\",\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.Optimism]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x7e80648EB2071E26937F9D42A513ccf4815fc702\",\n biconomyForwarder: \"0xefba8a2a82ec1fb1273806174f5e28fbb917cf95\",\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\",\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.OptimismGoerli]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x119704314Ef304EaAAE4b3c7C9ABd59272A28310\",\n biconomyForwarder: constants.AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\",\n twBYOCRegistry: constants.AddressZero\n },\n [ChainId.BinanceSmartChainMainnet]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0xE8dd2Ff0212F86d3197b4AfDC6dAC6ac47eb10aC\",\n biconomyForwarder: \"0x86C80a8aa58e0A4fa09A69624c31Ab2a6CAD56b8\",\n twBYOCRegistry: constants.AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\"\n },\n [ChainId.BinanceSmartChainTestnet]: {\n openzeppelinForwarder: \"0x8cbc8B5d71702032904750A66AEfE8B603eBC538\",\n openzeppelinForwarderEOA: \"0x7e80648EB2071E26937F9D42A513ccf4815fc702\",\n biconomyForwarder: \"0x61456BF1715C1415730076BB79ae118E806E74d2\",\n twBYOCRegistry: constants.AddressZero,\n twFactory: \"0xd24b3de085CFd8c54b94feAD08a7962D343E6DE0\",\n twRegistry: \"0x7c487845f98938Bb955B1D5AD069d9a30e4131fd\"\n }\n};\nconst APPROVED_IMPLEMENTATIONS = {\n [ChainId.Mainnet]: {\n \"nft-drop\": \"0x60fF9952e0084A6DEac44203838cDC91ABeC8736\",\n \"edition-drop\": \"0x74af262d0671F378F97a1EDC3d0970Dbe8A1C550\",\n \"token-drop\": \"0xE1eE43D23f247b6A9aF81fcE2766E76709482728\",\n \"signature-drop\": \"0x6fD690EB509BdE4C50028C5D9C0dE3750C2Fad6A\"\n },\n [ChainId.Polygon]: {\n \"nft-drop\": \"0xB96508050Ba0925256184103560EBADA912Fcc69\",\n \"edition-drop\": \"0x74af262d0671F378F97a1EDC3d0970Dbe8A1C550\",\n \"token-drop\": \"0x5A8eA4Adad8289746D073947BA06D69A62499aaf\",\n \"signature-drop\": \"0xBE2fDc35410E268e41Bec62DBb01AEb43245c7d5\"\n },\n [ChainId.Fantom]: {\n \"nft-drop\": \"0x2A396b2D90BAcEF19cDa973586B2633d22710fC2\",\n \"edition-drop\": \"0x06395FCF9AC6ED827f9dD6e776809cEF1Be0d21B\",\n \"token-drop\": \"0x0148b28a38efaaC31b6aa0a6D9FEb70FE7C91FFa\",\n \"signature-drop\": \"0xe135Ef65C2B2213C3fD56d0Bd6500A2cA147aC10\"\n },\n [ChainId.Avalanche]: {\n \"nft-drop\": \"0x9cF91118C8ee2913F0588e0F10e36B3d63F68bF6\",\n \"edition-drop\": \"0x135fC9D26E5eC51260ece1DF4ED424E2f55c7766\",\n \"token-drop\": \"0xca0B071899E575BA86495D46c5066971b6f3A901\",\n \"signature-drop\": \"0x1d47526C3292B0130ef0afD5F02c1DA052A017B3\"\n },\n [ChainId.Optimism]: {\n \"nft-drop\": \"0xFBd7D24d80ee005671E731a7287DEB6073264dD1\",\n \"edition-drop\": \"0xe135Ef65C2B2213C3fD56d0Bd6500A2cA147aC10\",\n \"token-drop\": \"0x902Dd246e66d8C3CE652375a723F2a52b43b9AAE\",\n \"signature-drop\": \"0x8a4cd3549e548bbEEb38C16E041FFf040a5acabD\"\n },\n [ChainId.Arbitrum]: {\n \"nft-drop\": \"0xC4903c1Ff5367b9ac2c349B63DC2409421AaEE2a\",\n \"edition-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\",\n \"token-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\",\n \"signature-drop\": \"0x2dF9851af45dd41C8584ac55D983C604da985Bc7\"\n },\n [ChainId.BinanceSmartChainMainnet]: {\n \"nft-drop\": \"0x902Dd246e66d8C3CE652375a723F2a52b43b9AAE\",\n \"edition-drop\": \"0x2A396b2D90BAcEF19cDa973586B2633d22710fC2\",\n \"token-drop\": \"0xe135Ef65C2B2213C3fD56d0Bd6500A2cA147aC10\",\n \"signature-drop\": \"0xFBd7D24d80ee005671E731a7287DEB6073264dD1\"\n },\n [ChainId.Goerli]: {\n \"nft-drop\": \"0xD11c97DD5F5546B5bBd630D7D1d7327481B0b92C\",\n \"edition-drop\": \"0x5A8eA4Adad8289746D073947BA06D69A62499aaf\",\n \"token-drop\": \"0x5680933221B752EB443654a014f88B101F868d50\",\n \"signature-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\"\n },\n [ChainId.Mumbai]: {\n \"nft-drop\": \"0xC4903c1Ff5367b9ac2c349B63DC2409421AaEE2a\",\n \"edition-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\",\n \"token-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\",\n \"signature-drop\": \"0x2dF9851af45dd41C8584ac55D983C604da985Bc7\"\n },\n [ChainId.FantomTestnet]: {\n \"nft-drop\": \"0x8a4cd3549e548bbEEb38C16E041FFf040a5acabD\",\n \"edition-drop\": \"0x902Dd246e66d8C3CE652375a723F2a52b43b9AAE\",\n \"token-drop\": \"0xFBd7D24d80ee005671E731a7287DEB6073264dD1\",\n \"signature-drop\": \"0x5A8eA4Adad8289746D073947BA06D69A62499aaf\"\n },\n [ChainId.AvalancheFujiTestnet]: {\n \"nft-drop\": \"0xD11c97DD5F5546B5bBd630D7D1d7327481B0b92C\",\n \"edition-drop\": \"0xE1eE43D23f247b6A9aF81fcE2766E76709482728\",\n \"token-drop\": \"0x6fD690EB509BdE4C50028C5D9C0dE3750C2Fad6A\",\n \"signature-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\"\n },\n [ChainId.OptimismGoerli]: {\n \"nft-drop\": \"0xCcddcec1831646Beff2753249f1B9C580327E89F\",\n \"edition-drop\": \"0x6fD690EB509BdE4C50028C5D9C0dE3750C2Fad6A\",\n \"token-drop\": \"0xD11c97DD5F5546B5bBd630D7D1d7327481B0b92C\",\n \"signature-drop\": \"0x1b5947e1a2d5a29D0df20931DeAB0B87818209B9\"\n },\n [ChainId.ArbitrumGoerli]: {\n \"nft-drop\": \"0x9CfE807a5b124b962064Fa8F7FD823Cc701255b6\",\n \"edition-drop\": \"0x9cF91118C8ee2913F0588e0F10e36B3d63F68bF6\",\n \"token-drop\": \"0x1d47526C3292B0130ef0afD5F02c1DA052A017B3\",\n \"signature-drop\": \"0xE1eE43D23f247b6A9aF81fcE2766E76709482728\"\n },\n [ChainId.BinanceSmartChainTestnet]: {\n \"nft-drop\": \"\",\n \"edition-drop\": \"\",\n \"token-drop\": \"\",\n \"signature-drop\": \"\" // TODO\n }\n};\n\n/**\n * @internal\n * @param chainId\n * @param contractType\n */\nfunction getApprovedImplementation(chainId,\n// TODO use SupportedChainId once we deploy to all chains\ncontractType) {\n if (chainId in APPROVED_IMPLEMENTATIONS) {\n const approvedImpls = APPROVED_IMPLEMENTATIONS[chainId];\n if (contractType in approvedImpls) {\n return approvedImpls[contractType];\n }\n }\n return null;\n}\n\n/**\n * @internal\n */\nfunction getContractAddressByChainId(chainId, contractName) {\n // for testing only\n if (chainId === ChainId.Hardhat) {\n if (contractName === \"twFactory\") {\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n return process.env.factoryAddress;\n } else if (contractName === \"twRegistry\") {\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n return process.env.registryAddress;\n } else {\n return constants.AddressZero;\n }\n }\n // real output here\n return CONTRACT_ADDRESSES[chainId][contractName];\n}\n\n/**\n * @internal\n */\nfunction getContractPublisherAddress() {\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n if (process.env.contractPublisherAddress) {\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n return process.env.contractPublisherAddress;\n } else {\n return ContractPublisher_address;\n }\n}\n\n/**\n * @internal\n */\nfunction getMultichainRegistryAddress() {\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n if (process.env.multiChainRegistryAddress) {\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n return process.env.multiChainRegistryAddress;\n } else {\n return MultichainRegistry_address;\n }\n}\n\n/**\n *\n * @param chainId - chain id\n * @returns the array of trusted forwarders for the given chain id\n * @internal\n */\nfunction getDefaultTrustedForwarders(chainId) {\n const chainEnum = SUPPORTED_CHAIN_IDS.find(c => c === chainId);\n const biconomyForwarder = chainEnum ? CONTRACT_ADDRESSES[chainEnum].biconomyForwarder : constants.AddressZero;\n const openzeppelinForwarder = chainEnum ? CONTRACT_ADDRESSES[chainEnum].openzeppelinForwarder : constants.AddressZero;\n return biconomyForwarder !== constants.AddressZero ? [openzeppelinForwarder, biconomyForwarder] : [openzeppelinForwarder];\n}\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst InterfaceId_IERC721 = utils.arrayify(\"0x80ac58cd\");\n\n/**\n * @internal\n */\nconst InterfaceId_IERC1155 = utils.arrayify(\"0xd9b67a26\");\n\n/**\n * @public\n */\nconst NATIVE_TOKEN_ADDRESS = \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\";\n\n/**\n * @public\n */\nconst NATIVE_TOKENS = {\n [ChainId.Mainnet]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Goerli]: {\n name: \"Görli Ether\",\n symbol: \"GOR\",\n decimals: 18,\n wrapped: {\n address: \"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Polygon]: {\n name: \"Matic\",\n symbol: \"MATIC\",\n decimals: 18,\n wrapped: {\n address: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\",\n name: \"Wrapped Matic\",\n symbol: \"WMATIC\"\n }\n },\n [ChainId.Mumbai]: {\n name: \"Matic\",\n symbol: \"MATIC\",\n decimals: 18,\n wrapped: {\n address: \"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889\",\n name: \"Wrapped Matic\",\n symbol: \"WMATIC\"\n }\n },\n [ChainId.Avalanche]: {\n name: \"Avalanche\",\n symbol: \"AVAX\",\n decimals: 18,\n wrapped: {\n address: \"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7\",\n name: \"Wrapped AVAX\",\n symbol: \"WAVAX\"\n }\n },\n [ChainId.AvalancheFujiTestnet]: {\n name: \"Avalanche\",\n symbol: \"AVAX\",\n decimals: 18,\n wrapped: {\n address: \"0xd00ae08403B9bbb9124bB305C09058E32C39A48c\",\n name: \"Wrapped AVAX\",\n symbol: \"WAVAX\"\n }\n },\n [ChainId.Fantom]: {\n name: \"Fantom\",\n symbol: \"FTM\",\n decimals: 18,\n wrapped: {\n address: \"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83\",\n name: \"Wrapped Fantom\",\n symbol: \"WFTM\"\n }\n },\n [ChainId.FantomTestnet]: {\n name: \"Fantom\",\n symbol: \"FTM\",\n decimals: 18,\n wrapped: {\n address: \"0xf1277d1Ed8AD466beddF92ef448A132661956621\",\n name: \"Wrapped Fantom\",\n symbol: \"WFTM\"\n }\n },\n [ChainId.Arbitrum]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.ArbitrumGoerli]: {\n name: \"Arbitrum Goerli Ether\",\n symbol: \"AGOR\",\n decimals: 18,\n wrapped: {\n address: \"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Optimism]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.OptimismGoerli]: {\n name: \"Goerli Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x4200000000000000000000000000000000000006\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.Hardhat]: {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n wrapped: {\n address: \"0x5FbDB2315678afecb367f032d93F642f64180aa3\",\n name: \"Wrapped Ether\",\n symbol: \"WETH\"\n }\n },\n [ChainId.BinanceSmartChainMainnet]: {\n name: \"Binance Chain Native Token\",\n symbol: \"BNB\",\n decimals: 18,\n wrapped: {\n address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n name: \"Wrapped Binance Chain Token\",\n symbol: \"WBNB\"\n }\n },\n [ChainId.BinanceSmartChainTestnet]: {\n name: \"Binance Chain Native Token\",\n symbol: \"TBNB\",\n decimals: 18,\n wrapped: {\n address: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\n name: \"Wrapped Binance Chain Testnet Token\",\n symbol: \"WBNB\"\n }\n }\n};\n\n/**\n * Returns the native token for a given chain\n * @param chainId - the chain id\n * @public\n */\nfunction getNativeTokenByChainId(chainId) {\n return NATIVE_TOKENS[chainId];\n}\nconst LINK_TOKEN_ADDRESS = {\n [ChainId.Mainnet]: \"0x514910771AF9Ca656af840dff83E8264EcF986CA\",\n [ChainId.Goerli]: \"0x326C977E6efc84E512bB9C30f76E30c160eD06FB\",\n [ChainId.BinanceSmartChainMainnet]: \"0x404460C6A5EdE2D891e8297795264fDe62ADBB75\",\n [ChainId.Polygon]: \"0xb0897686c545045aFc77CF20eC7A532E3120E0F1\",\n [ChainId.Mumbai]: \"0x326C977E6efc84E512bB9C30f76E30c160eD06FB\",\n [ChainId.Avalanche]: \"0x5947BB275c521040051D82396192181b413227A3\",\n [ChainId.AvalancheFujiTestnet]: \"0x0b9d5D9136855f6FEc3c0993feE6E9CE8a297846\",\n [ChainId.Fantom]: \"0x6F43FF82CCA38001B6699a8AC47A2d0E66939407\",\n [ChainId.FantomTestnet]: \"0xfaFedb041c0DD4fA2Dc0d87a6B0979Ee6FA7af5F\"\n};\n\n/**\n * @public\n */\nlet EventType;\n(function (EventType) {\n EventType[\"Transaction\"] = \"transaction\";\n EventType[\"Signature\"] = \"signature\";\n})(EventType || (EventType = {}));\n\nconst DEFAULT_BATCH_TIME_LIMIT_MS = 50;\nconst DEFAULT_BATCH_SIZE_LIMIT = 250;\nconst DEFAULT_BATCH_OPTIONS = {\n timeLimitMs: DEFAULT_BATCH_TIME_LIMIT_MS,\n sizeLimit: DEFAULT_BATCH_SIZE_LIMIT\n};\n// mostly copied from ethers.js directly but make it a StaticJsonRpcProvider\nclass StaticJsonRpcBatchProvider extends providers.StaticJsonRpcProvider {\n constructor(url, network) {\n let batchOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_BATCH_OPTIONS;\n super(url, network);\n _defineProperty(this, \"_timeLimitMs\", void 0);\n _defineProperty(this, \"_sizeLimit\", void 0);\n _defineProperty(this, \"_pendingBatchAggregator\", void 0);\n _defineProperty(this, \"_pendingBatch\", void 0);\n this._timeLimitMs = batchOptions.timeLimitMs || DEFAULT_BATCH_SIZE_LIMIT;\n this._sizeLimit = batchOptions.sizeLimit || DEFAULT_BATCH_TIME_LIMIT_MS;\n this._pendingBatchAggregator = null;\n this._pendingBatch = null;\n }\n sendCurrentBatch(request) {\n // if we still have a timeout clear that first\n if (this._pendingBatchAggregator) {\n clearTimeout(this._pendingBatchAggregator);\n }\n // Get the current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch || [];\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request_ = batch.map(inflight => inflight.request);\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: utils.deepCopy(request),\n provider: this\n });\n return utils.fetchJson(this.connection, JSON.stringify(request_)).then(result => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request_,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest_, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest_.reject(error);\n } else {\n inflightRequest_.resolve(payload.result);\n }\n });\n }, error => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request_,\n provider: this\n });\n\n // If there was an error, reject all the requests\n batch.forEach(inflightRequest_ => {\n inflightRequest_.reject(error);\n });\n });\n }\n send(method, params) {\n const request = {\n method: method,\n params: params,\n id: this._nextId++,\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch === null) {\n this._pendingBatch = [];\n }\n const inflightRequest = {\n request,\n resolve: null,\n reject: null\n };\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n // if we would go *over* the size limit of the batch with this request, send the batch now\n if (this._pendingBatch.length === this._sizeLimit) {\n this.sendCurrentBatch(request);\n }\n this._pendingBatch.push(inflightRequest);\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n this.sendCurrentBatch(request);\n }, this._timeLimitMs);\n }\n return promise;\n }\n}\n\n/**\n * @internal\n */\nconst DEFAULT_IPFS_GATEWAY = \"https://gateway.ipfscdn.io/ipfs/\";\nconst CHAIN_NAME_TO_ID = {\n \"avalanche-fuji\": ChainId.AvalancheFujiTestnet,\n \"avalanche-testnet\": ChainId.AvalancheFujiTestnet,\n \"fantom-testnet\": ChainId.FantomTestnet,\n ethereum: ChainId.Mainnet,\n matic: ChainId.Polygon,\n mumbai: ChainId.Mumbai,\n goerli: ChainId.Goerli,\n polygon: ChainId.Polygon,\n mainnet: ChainId.Mainnet,\n optimism: ChainId.Optimism,\n \"optimism-goerli\": ChainId.OptimismGoerli,\n arbitrum: ChainId.Arbitrum,\n \"arbitrum-goerli\": ChainId.ArbitrumGoerli,\n fantom: ChainId.Fantom,\n avalanche: ChainId.Avalanche,\n binance: ChainId.BinanceSmartChainMainnet,\n \"binance-testnet\": ChainId.BinanceSmartChainTestnet\n};\nconst CHAIN_ID_TO_NAME = Object.fromEntries(Object.entries(CHAIN_NAME_TO_ID).map(_ref => {\n let [name, id] = _ref;\n return [id, name];\n}));\nfunction buildDefaultMap() {\n return SUPPORTED_CHAIN_IDS.reduce((previousValue, currentValue) => {\n previousValue[currentValue] = getProviderForNetwork(CHAIN_ID_TO_NAME[currentValue]);\n return previousValue;\n }, {});\n}\nconst DEFAULT_RPC_URLS = buildDefaultMap();\n\n/**\n * @internal\n * @param network - the chain name or rpc url\n * @returns the rpc url for that chain\n */\nfunction getProviderForNetwork(network) {\n if (typeof network !== \"string\") {\n return network;\n }\n switch (network) {\n case \"mainnet\":\n case \"ethereum\":\n return getRpcUrl(\"ethereum\");\n case \"goerli\":\n return getRpcUrl(\"goerli\");\n case \"polygon\":\n case \"matic\":\n return getRpcUrl(\"polygon\");\n case \"mumbai\":\n return getRpcUrl(\"mumbai\");\n case \"optimism\":\n return getRpcUrl(\"optimism\");\n case \"optimism-goerli\":\n return getRpcUrl(\"optimism-goerli\");\n case \"arbitrum\":\n return getRpcUrl(\"arbitrum\");\n case \"arbitrum-goerli\":\n return getRpcUrl(\"arbitrum-goerli\");\n case \"fantom\":\n return getRpcUrl(\"fantom\");\n case \"fantom-testnet\":\n return getRpcUrl(\"fantom-testnet\");\n case \"avalanche\":\n return getRpcUrl(\"avalanche\");\n case \"avalanche-testnet\":\n case \"avalanche-fuji\":\n return getRpcUrl(\"avalanche-fuji\");\n case \"binance\":\n return getRpcUrl(\"binance\");\n case \"binance-testnet\":\n return getRpcUrl(\"binance-testnet\");\n default:\n if (network.startsWith(\"http\") || network.startsWith(\"ws\")) {\n return network;\n } else {\n throw new Error(`Unrecognized chain name or RPC url: ${network}`);\n }\n }\n}\nconst READONLY_PROVIDER_MAP = new Map();\n\n/**\n *\n * @param network - the chain name or rpc url\n * @param chainId - the optional chain id\n * @returns the provider\n */\nfunction getReadOnlyProvider(network, chainId) {\n try {\n const match = network.match(/^(ws|http)s?:/i);\n // try the JSON batch provider if available\n if (match) {\n switch (match[1]) {\n case \"http\":\n const seralizedOpts = `${network}-${chainId || -1}`;\n const existingProvider = READONLY_PROVIDER_MAP.get(seralizedOpts);\n if (existingProvider) {\n return existingProvider;\n }\n const newProvider = chainId ?\n // if we know the chainId we should use the StaticJsonRpcBatchProvider\n new StaticJsonRpcBatchProvider(network, chainId) :\n // otherwise fall back to the built in json rpc batch provider\n new providers.JsonRpcBatchProvider(network, chainId);\n READONLY_PROVIDER_MAP.set(seralizedOpts, newProvider);\n return newProvider;\n case \"ws\":\n return new providers.WebSocketProvider(network, chainId);\n default:\n return ethers.getDefaultProvider(network);\n }\n } else {\n return ethers.getDefaultProvider(network);\n }\n } catch (e) {\n // fallback to the default provider\n return ethers.getDefaultProvider(network);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n({\n [ChainId.Polygon]: \"polygon\",\n [ChainId.Mumbai]: \"mumbai\",\n [ChainId.Goerli]: \"goerli\",\n [ChainId.Mainnet]: \"mainnet\",\n [ChainId.Optimism]: \"optimism\",\n [ChainId.OptimismGoerli]: \"optimism-goerli\",\n [ChainId.Arbitrum]: \"arbitrum\",\n [ChainId.ArbitrumGoerli]: \"arbitrum-goerli\",\n [ChainId.Fantom]: \"fantom\",\n [ChainId.FantomTestnet]: \"fantom-testnet\",\n [ChainId.Avalanche]: \"avalanche\",\n [ChainId.AvalancheFujiTestnet]: \"avalanche-fuji\",\n [ChainId.BinanceSmartChainMainnet]: \"binance\",\n [ChainId.BinanceSmartChainTestnet]: \"binance-testnet\"\n});\n\n/**\n * Error that may get thrown if IPFS returns nothing for a given uri.\n * @internal\n */\nclass NotFoundError extends Error {\n /** @internal */\n constructor(identifier) {\n super(identifier ? `Object with id ${identifier} NOT FOUND` : \"NOT_FOUND\");\n }\n}\n\n/**\n * Error that may get thrown if an invalid address was passed\n * @internal\n */\nclass InvalidAddressError extends Error {\n /** @internal */\n constructor(address) {\n super(address ? `'${address}' is an invalid address` : \"Invalid address passed\");\n }\n}\n\n/**\n * @internal\n */\nclass MissingRoleError extends Error {\n /** @internal */\n /** @internal */\n constructor(address, role) {\n super(`MISSING ROLE: ${address} does not have the '${role}' role`);\n }\n}\n\n/**\n * @internal\n */\nclass AssetNotFoundError extends Error {\n /** @internal */\n /** @internal */\n constructor() {\n let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"The asset you're trying to use could not be found.\";\n super(`message: ${message}`);\n }\n}\n\n/**\n * @internal\n */\nclass UploadError extends Error {\n /** @internal */\n constructor(message) {\n super(`UPLOAD_FAILED: ${message}`);\n }\n}\n\n/**\n * @internal\n */\nclass FileNameMissingError extends Error {\n /** @internal */\n constructor() {\n super(\"File name is required when object is not a `File` type object.\");\n }\n}\n\n/**\n * @internal\n */\nclass DuplicateFileNameError extends Error {\n /** @internal */\n constructor(fileName) {\n super(`DUPLICATE_FILE_NAME_ERROR: File name ${fileName} was passed for more than one file.`);\n }\n}\n\n/**\n * @internal\n */\nclass NotEnoughTokensError extends Error {\n /** @internal */\n constructor(contractAddress, quantity, available) {\n super(`BALANCE ERROR: you do not have enough balance on contract ${contractAddress} to use ${quantity} tokens. You have ${available} tokens available.`);\n }\n}\n\n/**\n * @internal\n */\nclass MissingOwnerRoleError extends Error {\n /** @internal */\n constructor() {\n super(`LIST ERROR: you should be the owner of the token to list it.`);\n }\n}\n\n/**\n * @internal\n */\nclass QuantityAboveLimitError extends Error {\n /** @internal */\n constructor(quantity) {\n super(`BUY ERROR: You cannot buy more than ${quantity} tokens`);\n }\n}\n\n/**\n * Thrown when data fails to fetch from storage.\n * @internal\n */\nclass FetchError extends Error {\n /** @internal */\n constructor(message, innerError) {\n super(`FETCH_FAILED: ${message}`);\n _defineProperty(this, \"innerError\", void 0);\n this.innerError = innerError;\n }\n}\n\n/**\n * Thrown when attempting to create a snapshot with duplicate leafs\n * @internal\n */\nclass DuplicateLeafsError extends Error {\n constructor(message) {\n super(`DUPLICATE_LEAFS${message ? ` : ${message}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to update/cancel an auction that already started\n * @internal\n */\nclass AuctionAlreadyStartedError extends Error {\n constructor(id) {\n super(`Auction already started with existing bid${id ? `, id: ${id}` : \"\"}`);\n }\n}\n\n/**\n * @internal\n */\nclass FunctionDeprecatedError extends Error {\n /** @internal */\n constructor(message) {\n super(`FUNCTION DEPRECATED. ${message ? `Use ${message} instead` : \"\"}`);\n }\n}\n\n/**\n * Thrown when trying to retrieve a listing from a marketplace that doesn't exist\n * @internal\n */\nclass ListingNotFoundError extends Error {\n constructor(marketplaceContractAddress, listingId) {\n super(`Could not find listing.${marketplaceContractAddress ? ` marketplace address: ${marketplaceContractAddress}` : \"\"}${listingId ? ` listing id: ${listingId}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when trying to retrieve a listing of the wrong type\n * @internal\n */\nclass WrongListingTypeError extends Error {\n constructor(marketplaceContractAddress, listingId, actualType, expectedType) {\n super(`Incorrect listing type. Are you sure you're using the right method?.${marketplaceContractAddress ? ` marketplace address: ${marketplaceContractAddress}` : \"\"}${listingId ? ` listing id: ${listingId}` : \"\"}${expectedType ? ` expected type: ${expectedType}` : \"\"}${actualType ? ` actual type: ${actualType}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to transfer an asset that has restricted transferability\n * @internal\n */\nclass RestrictedTransferError extends Error {\n constructor(assetAddress) {\n super(`Failed to transfer asset, transfer is restricted.${assetAddress ? ` Address : ${assetAddress}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to execute an admin-role function.\n * @internal\n */\nclass AdminRoleMissingError extends Error {\n constructor(address, contractAddress) {\n let message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"Failed to execute transaction\";\n super(`${message}, admin role is missing${address ? ` on address: ${address}` : \"\"}${contractAddress ? ` on contract: ${contractAddress}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to close an auction that has not ended\n * @internal\n */\nclass AuctionHasNotEndedError extends Error {\n constructor(id, endTime) {\n super(`Auction has not ended yet${id ? `, id: ${id}` : \"\"}${endTime ? `, end time: ${endTime.toString()}` : \"\"}`);\n }\n}\n\n/**\n * Thrown when attempting to call a contract function that is not implemented\n * @internal\n */\nclass ExtensionNotImplementedError extends Error {\n constructor(feature) {\n super(`This functionality is not available because the contract does not implement the '${feature.docLinks.contracts}' Extension. Learn how to unlock this functionality at https://portal.thirdweb.com/extensions `);\n }\n}\n\n/**\n * @internal\n */\nvar _reason = /*#__PURE__*/new WeakMap();\nvar _info = /*#__PURE__*/new WeakMap();\n/**\n * @public\n */\nclass TransactionError extends Error {\n constructor(info) {\n let errorMessage = `\\n\\n\\n╔═══════════════════╗\\n║ TRANSACTION ERROR ║\\n╚═══════════════════╝\\n\\n`;\n errorMessage += `Reason: ${info.reason}`;\n errorMessage += `\\n\\n\\n╔═════════════════════════╗\\n║ TRANSACTION INFORMATION ║\\n╚═════════════════════════╝\\n`;\n errorMessage += withSpaces(\"from\", info.from);\n errorMessage += withSpaces(\"to\", info.contractName ? `${info.to} (${info.contractName})` : info.to);\n errorMessage += withSpaces(`chain`, `${info.network.name} (${info.network.chainId})`);\n if (info.rpcUrl) {\n try {\n const url = new URL(info.rpcUrl);\n errorMessage += withSpaces(`rpc`, url.hostname);\n } catch (e2) {\n // ignore if can't parse URL\n }\n }\n if (info.hash) {\n errorMessage += withSpaces(`tx hash`, info.hash);\n }\n if (info.value && info.value.gt(0)) {\n errorMessage += withSpaces(\"value\", `${ethers.utils.formatEther(info.value)} ${NATIVE_TOKENS[info.network.chainId]?.symbol || \"\"}`);\n }\n errorMessage += withSpaces(`data`, `${info.data}`);\n if (info.method) {\n errorMessage += withSpaces(\"method\", info.method);\n }\n if (info.sources) {\n const revertFile = info.sources.find(file => file.source.includes(info.reason));\n if (revertFile) {\n const lines = revertFile.source.split(\"\\n\").map((line, index) => `${index + 1} ${line}`);\n const revertLine = lines.findIndex(line => line.includes(info.reason));\n lines[revertLine] += \" <-- REVERT\";\n const errorLines = lines.slice(revertLine - 8, revertLine + 4);\n errorMessage += `\\n\\n\\n╔══════════════════════╗\\n║ SOLIDITY STACK TRACE ║\\n╚══════════════════════╝\\n\\n`;\n errorMessage += `File: ${revertFile.filename.replace(\"node_modules/\", \"\")}\\n\\n`;\n errorMessage += errorLines.join(\"\\n\");\n }\n }\n errorMessage += `\\n\\n\\n╔═════════════════════╗\\n║ DEBUGGING RESOURCES ║\\n╚═════════════════════╝\\n\\n`;\n errorMessage += `Need helping debugging? Join our Discord: https://discord.gg/thirdweb`;\n errorMessage += `\\n\\n`;\n super(errorMessage);\n _classPrivateFieldInitSpec(this, _reason, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _info, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldSet(this, _reason, info.reason);\n _classPrivateFieldSet(this, _info, info);\n }\n\n // Keep reason here for backwards compatibility\n get reason() {\n return _classPrivateFieldGet(this, _reason);\n }\n get info() {\n return _classPrivateFieldGet(this, _info);\n }\n}\n\n/**\n * @internal\n */\nfunction parseRevertReason(error) {\n if (error.reason) {\n return error.reason;\n }\n\n // I think this code path should never be hit, but just in case\n\n let errorString = error;\n if (typeof error === \"object\") {\n // MetaMask errors come as objects so parse them first\n errorString = JSON.stringify(error);\n } else if (typeof error !== \"string\") {\n errorString = error.toString();\n }\n return parseMessageParts(/.*?\"message\":\"([^\"\\\\]*).*?/, errorString) || parseMessageParts(/.*?\"reason\":\"([^\"\\\\]*).*?/, errorString) || error.message || \"\";\n}\nfunction withSpaces(label, content) {\n if (content === \"\") {\n return content;\n }\n const spaces = Array(10 - label.length).fill(\" \").join(\"\");\n if (content.includes(\"\\n\")) {\n content = \"\\n\\n \" + content.split(\"\\n\").join(`\\n `);\n } else {\n content = `${spaces}${content}`;\n }\n return `\\n${label}:${content}`;\n}\nfunction parseMessageParts(regex, raw) {\n const msgMatches = raw.match(regex) || [];\n let extracted = \"\";\n if (msgMatches?.length > 0) {\n extracted += msgMatches[1];\n }\n return extracted;\n}\n\n/**\n * @internal\n * @param err\n * @param message\n */\nfunction includesErrorMessage(err, message) {\n if (!err) {\n return false;\n }\n return err && err.toString().includes(message) || err && err.message && err.message.toString().includes(message) || err && err.error && err.error.toString().includes(message);\n}\n\nconst BigNumberSchema = z.union([z.string(), z.number(), z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n})]).transform(arg => BigNumber.from(arg));\nconst BigNumberishSchema = BigNumberSchema.transform(arg => arg.toString());\nconst BigNumberTransformSchema = z.union([z.bigint(), z.custom(data => {\n return BigNumber.isBigNumber(data);\n})]).transform(arg => {\n return BigNumber.from(arg).toString();\n});\nconst AddressSchema = z.string().refine(arg => utils.isAddress(arg), out => {\n return {\n message: `${out} is not a valid address`\n };\n});\nconst RawDateSchema = z.date().transform(i => {\n return BigNumber.from(Math.floor(i.getTime() / 1000));\n});\n\n/**\n * Default to now\n */\nconst StartDateSchema = RawDateSchema.default(new Date(0));\n\n/**\n * Default to 10 years from now\n */\nconst EndDateSchema = RawDateSchema.default(new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 10));\nconst CallOverrideSchema = z.object({\n gasLimit: BigNumberishSchema.optional(),\n gasPrice: BigNumberishSchema.optional(),\n maxFeePerGas: BigNumberishSchema.optional(),\n maxPriorityFeePerGas: BigNumberishSchema.optional(),\n nonce: BigNumberishSchema.optional(),\n value: BigNumberishSchema.optional(),\n blockTag: z.union([z.string(), z.number()]).optional(),\n from: AddressSchema.optional(),\n type: z.number().optional()\n}).strict();\n\n/**\n * @internal\n */\nconst CurrencySchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.number()\n});\n\n/**\n * @internal\n */\nconst CurrencyValueSchema = CurrencySchema.extend({\n value: BigNumberSchema,\n displayValue: z.string()\n});\n\n/**\n * @internal\n */\nconst MerkleSchema = z.object({\n merkle: z.record(z.string()).default({})\n});\nconst SnapshotEntryInput = z.object({\n address: AddressSchema,\n maxClaimable: QuantitySchema.default(0),\n // defaults to 0\n price: QuantitySchema.optional(),\n // defaults to unlimited, but can be undefined in old snapshots\n currencyAddress: AddressSchema.default(ethers.constants.AddressZero).optional() // defaults to AddressZero, but can be undefined for old snapshots\n});\n\n/**\n * @internal\n */\nconst SnapshotInputSchema = z.union([z.array(z.string()).transform(strings => strings.map(address => SnapshotEntryInput.parse({\n address\n}))), z.array(SnapshotEntryInput)]);\nconst SnapshotEntryWithProofSchema = SnapshotEntryInput.extend({\n proof: z.array(z.string())\n});\n/**\n * @internal\n */\nconst SnapshotSchema = z.object({\n /**\n * The merkle root\n */\n merkleRoot: z.string(),\n claims: z.array(SnapshotEntryWithProofSchema)\n});\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst SnapshotInfoSchema = z.object({\n merkleRoot: z.string(),\n snapshotUri: z.string()\n});\n\n/**\n * @internal\n */\nconst ClaimConditionMetadataSchema = z.object({\n name: z.string().optional()\n}).catchall(z.unknown());\n\n/**\n * @internal\n */\nconst ClaimConditionInputSchema = z.object({\n startTime: StartDateSchema,\n currencyAddress: z.string().default(NATIVE_TOKEN_ADDRESS),\n price: AmountSchema.default(0),\n maxClaimableSupply: QuantitySchema,\n maxClaimablePerWallet: QuantitySchema,\n waitInSeconds: BigNumberishSchema.default(0),\n merkleRootHash: BytesLikeSchema.default(utils.hexZeroPad([0], 32)),\n snapshot: z.optional(SnapshotInputSchema).nullable(),\n metadata: ClaimConditionMetadataSchema.optional()\n});\n\n/**\n * @internal\n */\nconst ClaimConditionInputArray = z.array(ClaimConditionInputSchema);\n\n/**\n * @internal\n */\nconst PartialClaimConditionInputSchema = ClaimConditionInputSchema.partial();\n\n/**\n * @internal\n */\nconst ClaimConditionOutputSchema = ClaimConditionInputSchema.extend({\n availableSupply: QuantitySchema,\n currentMintSupply: QuantitySchema,\n currencyMetadata: CurrencyValueSchema.default({\n value: BigNumber.from(\"0\"),\n displayValue: \"0\",\n symbol: \"\",\n decimals: 18,\n name: \"\"\n }),\n price: BigNumberSchema,\n waitInSeconds: BigNumberSchema,\n startTime: BigNumberSchema.transform(n => new Date(n.toNumber() * 1000)),\n snapshot: SnapshotInputSchema.optional().nullable()\n});\n\nfunction resolveOrGenerateId(requestUId) {\n if (requestUId === undefined) {\n const buffer = Buffer.alloc(16);\n v4({}, buffer);\n return utils.hexlify(utils.toUtf8Bytes(buffer.toString(\"hex\")));\n } else {\n return utils.hexlify(requestUId);\n }\n}\n\n/**\n * @internal\n */\nconst BaseSignaturePayloadInput = z.object({\n to: z.string().refine(address => address.toLowerCase() !== constants.AddressZero, {\n message: \"Cannot create payload to mint to zero address\"\n }),\n price: AmountSchema.default(0),\n currencyAddress: z.string().default(NATIVE_TOKEN_ADDRESS),\n mintStartTime: StartDateSchema,\n mintEndTime: EndDateSchema,\n uid: z.string().optional().transform(arg => resolveOrGenerateId(arg)),\n primarySaleRecipient: z.string().default(constants.AddressZero)\n});\n\n/**\n * @internal\n */\nconst Signature20PayloadInput = BaseSignaturePayloadInput.extend({\n quantity: AmountSchema\n});\n\n/**\n * @internal\n */\nconst Signature20PayloadOutput = Signature20PayloadInput.extend({\n mintStartTime: BigNumberSchema,\n mintEndTime: BigNumberSchema\n});\n\n/**\n * @internal\n */\nconst Signature721PayloadInput = BaseSignaturePayloadInput.extend({\n metadata: NFTInputOrUriSchema,\n royaltyRecipient: z.string().default(constants.AddressZero),\n royaltyBps: BasisPointsSchema.default(0)\n});\n\n/**\n * @internal\n */\nconst Signature721PayloadOutput = Signature721PayloadInput.extend({\n uri: z.string(),\n royaltyBps: BigNumberSchema,\n mintStartTime: BigNumberSchema,\n mintEndTime: BigNumberSchema\n});\n\n/**\n * @internal\n */\nconst Signature1155PayloadInput = Signature721PayloadInput.extend({\n metadata: NFTInputOrUriSchema.default(\"\"),\n quantity: BigNumberishSchema\n});\n\n/**\n * @internal\n */\nconst Signature1155PayloadInputWithTokenId = Signature1155PayloadInput.extend({\n tokenId: BigNumberishSchema\n});\n\n/**\n * @internal\n */\nconst Signature1155PayloadOutput = Signature721PayloadOutput.extend({\n tokenId: BigNumberSchema,\n quantity: BigNumberSchema\n});\n\n/**\n * @internal\n */\nconst Signature721WithQuantityInput = Signature721PayloadInput.extend({\n metadata: NFTInputOrUriSchema.default(\"\"),\n quantity: BigNumberSchema.default(1)\n});\n\n/**\n * @internal\n */\nconst Signature721WithQuantityOutput = Signature721PayloadOutput.extend({\n quantity: BigNumberSchema.default(1)\n});\n\n/**\n * @public\n */\n\nconst MintRequest20 = [{\n name: \"to\",\n type: \"address\"\n}, {\n name: \"primarySaleRecipient\",\n type: \"address\"\n}, {\n name: \"quantity\",\n type: \"uint256\"\n}, {\n name: \"price\",\n type: \"uint256\"\n}, {\n name: \"currency\",\n type: \"address\"\n}, {\n name: \"validityStartTimestamp\",\n type: \"uint128\"\n}, {\n name: \"validityEndTimestamp\",\n type: \"uint128\"\n}, {\n name: \"uid\",\n type: \"bytes32\"\n}];\nconst MintRequest721 = [{\n name: \"to\",\n type: \"address\"\n}, {\n name: \"royaltyRecipient\",\n type: \"address\"\n}, {\n name: \"royaltyBps\",\n type: \"uint256\"\n}, {\n name: \"primarySaleRecipient\",\n type: \"address\"\n}, {\n name: \"uri\",\n type: \"string\"\n}, {\n name: \"price\",\n type: \"uint256\"\n}, {\n name: \"currency\",\n type: \"address\"\n}, {\n name: \"validityStartTimestamp\",\n type: \"uint128\"\n}, {\n name: \"validityEndTimestamp\",\n type: \"uint128\"\n}, {\n name: \"uid\",\n type: \"bytes32\"\n}];\nconst MintRequest1155 = [{\n name: \"to\",\n type: \"address\"\n}, {\n name: \"royaltyRecipient\",\n type: \"address\"\n}, {\n name: \"royaltyBps\",\n type: \"uint256\"\n}, {\n name: \"primarySaleRecipient\",\n type: \"address\"\n}, {\n name: \"tokenId\",\n type: \"uint256\"\n}, {\n name: \"uri\",\n type: \"string\"\n}, {\n name: \"quantity\",\n type: \"uint256\"\n}, {\n name: \"pricePerToken\",\n type: \"uint256\"\n}, {\n name: \"currency\",\n type: \"address\"\n}, {\n name: \"validityStartTimestamp\",\n type: \"uint128\"\n}, {\n name: \"validityEndTimestamp\",\n type: \"uint128\"\n}, {\n name: \"uid\",\n type: \"bytes32\"\n}];\nconst MintRequest721withQuantity = [{\n name: \"to\",\n type: \"address\"\n}, {\n name: \"royaltyRecipient\",\n type: \"address\"\n}, {\n name: \"royaltyBps\",\n type: \"uint256\"\n}, {\n name: \"primarySaleRecipient\",\n type: \"address\"\n}, {\n name: \"uri\",\n type: \"string\"\n}, {\n name: \"quantity\",\n type: \"uint256\"\n}, {\n name: \"pricePerToken\",\n type: \"uint256\"\n}, {\n name: \"currency\",\n type: \"address\"\n}, {\n name: \"validityStartTimestamp\",\n type: \"uint128\"\n}, {\n name: \"validityEndTimestamp\",\n type: \"uint128\"\n}, {\n name: \"uid\",\n type: \"bytes32\"\n}];\nconst GenericRequest = [{\n name: \"validityStartTimestamp\",\n type: \"uint128\"\n}, {\n name: \"validityEndTimestamp\",\n type: \"uint128\"\n}, {\n name: \"uid\",\n type: \"bytes32\"\n}, {\n name: \"data\",\n type: \"bytes\"\n}];\n\n/**\n * @internal\n */\nconst CommonContractSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n image: FileOrBufferOrStringSchema.optional(),\n external_link: z.string().url().optional()\n});\n/**\n * @internal\n */\nconst CommonContractOutputSchema = CommonContractSchema.extend({\n image: z.string().optional()\n}).catchall(z.unknown());\n\n/**\n * @internal\n */\nconst CommonRoyaltySchema = z.object({\n /**\n * The amount of royalty collected on all royalties represented as basis points.\n * The default is 0 (no royalties).\n *\n * 1 basis point = 0.01%\n *\n * For example: if this value is 100, then the royalty is 1% of the total sales.\n *\n * @internalremarks used by OpenSea \"seller_fee_basis_points\"\n */\n seller_fee_basis_points: BasisPointsSchema.default(0),\n /**\n * The address of the royalty recipient. All royalties will be sent\n * to this address.\n * @internalremarks used by OpenSea \"fee_recipient\"\n */\n fee_recipient: AddressSchema.default(constants.AddressZero)\n});\n\n/**\n * @internal\n */\nconst CommonPrimarySaleSchema = z.object({\n /**\n * primary sale recipient address\n */\n primary_sale_recipient: AddressSchema\n});\n\n/**\n * @internal\n */\nconst CommonPlatformFeeSchema = z.object({\n /**\n * platform fee basis points\n */\n platform_fee_basis_points: BasisPointsSchema.default(0),\n /**\n * platform fee recipient address\n */\n platform_fee_recipient: AddressSchema.default(constants.AddressZero)\n});\n\n/**\n * @internal\n */\nconst CommonTrustedForwarderSchema = z.object({\n trusted_forwarders: z.array(AddressSchema).default([])\n});\n\n/**\n * @internal\n */\nconst CommonSymbolSchema = z.object({\n symbol: z.string().optional().default(\"\")\n});\n\nconst DropErc721ContractInput = CommonContractSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema);\nconst DropErc721ContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema);\nconst DropErc721ContractDeploy = DropErc721ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema);\nconst DropErc721ContractSchema = {\n deploy: DropErc721ContractDeploy,\n output: DropErc721ContractOutput,\n input: DropErc721ContractInput\n};\n\nconst DropErc1155ContractInput = CommonContractSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema);\nconst DropErc1155ContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(MerkleSchema).merge(CommonSymbolSchema);\nconst DropErc1155ContractDeploy = DropErc1155ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema);\nconst DropErc1155ContractSchema = {\n deploy: DropErc1155ContractDeploy,\n output: DropErc1155ContractOutput,\n input: DropErc1155ContractInput\n};\n\nconst MarketplaceContractInput = CommonContractSchema;\nconst MarketplaceContractOutput = CommonContractOutputSchema;\nconst MarketplaceContractDeploy = MarketplaceContractInput.merge(CommonPlatformFeeSchema).merge(CommonTrustedForwarderSchema);\nconst MarketplaceContractSchema = {\n deploy: MarketplaceContractDeploy,\n output: MarketplaceContractOutput,\n input: MarketplaceContractInput\n};\n\nconst PackContractInput = CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst PackContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst PackContractDeploy = PackContractInput.merge(CommonPlatformFeeSchema).merge(CommonTrustedForwarderSchema);\nconst PackContractSchema = {\n deploy: PackContractDeploy,\n output: PackContractOutput,\n input: PackContractInput\n};\n\nconst SplitRecipientInputSchema = z.object({\n address: AddressSchema,\n sharesBps: BasisPointsSchema.gt(0, \"Shares must be greater than 0\")\n});\nconst SplitRecipientOuputSchema = SplitRecipientInputSchema.extend({\n address: AddressSchema,\n sharesBps: BasisPointsSchema\n});\nconst SplitsContractInput = CommonContractSchema.extend({\n recipients: z.array(SplitRecipientInputSchema).default([]).superRefine((val, context) => {\n const addressMap = {};\n let totalShares = 0;\n for (let index = 0; index < val.length; index++) {\n const entry = val[index];\n if (addressMap[entry.address]) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate address.`,\n path: [index, `address`]\n });\n }\n addressMap[entry.address] = true;\n totalShares += entry.sharesBps;\n if (totalShares > 10000) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Total shares cannot go over 100%.`,\n path: [index, `sharesBps`]\n });\n }\n }\n if (totalShares !== 10000) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Total shares need to add up to 100%. Total shares are currently ${totalShares / 100}%`,\n path: []\n });\n }\n })\n});\nconst SplitsContractOutput = CommonContractOutputSchema.extend({\n recipients: z.array(SplitRecipientOuputSchema)\n});\nconst SplitsContractDeploy = SplitsContractInput.merge(SplitsContractInput).merge(CommonTrustedForwarderSchema);\nconst SplitsContractSchema = {\n deploy: SplitsContractDeploy,\n output: SplitsContractOutput,\n input: SplitsContractInput\n};\n\nconst TokenErc20ContractInput = CommonContractSchema.merge(CommonSymbolSchema);\nconst TokenErc20ContractOutput = CommonContractOutputSchema.merge(CommonSymbolSchema);\nconst TokenErc20ContractDeploy = TokenErc20ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema);\nconst TokenErc20ContractSchema = {\n deploy: TokenErc20ContractDeploy,\n output: TokenErc20ContractOutput,\n input: TokenErc20ContractInput\n};\n\nconst TokenErc721ContractInput = CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst TokenErc721ContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst TokenErc721ContractDeploy = TokenErc721ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema);\nconst TokenErc721ContractSchema = {\n deploy: TokenErc721ContractDeploy,\n output: TokenErc721ContractOutput,\n input: TokenErc721ContractInput\n};\n\nconst TokenErc1155ContractInput = CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst TokenErc1155ContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst TokenErc1155ContractDeploy = TokenErc1155ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema);\nconst TokenErc1155ContractSchema = {\n deploy: TokenErc1155ContractDeploy,\n output: TokenErc1155ContractOutput,\n input: TokenErc1155ContractInput\n};\n\nconst VoteSettingsInputSchema = z.object({\n voting_delay_in_blocks: z.number().min(0).default(0),\n voting_period_in_blocks: z.number().min(1).default(1),\n voting_token_address: AddressSchema,\n voting_quorum_fraction: PercentSchema.default(0),\n proposal_token_threshold: BigNumberishSchema.default(1)\n});\nconst VoteSettingsOuputSchema = VoteSettingsInputSchema.extend({\n proposal_token_threshold: BigNumberSchema\n});\nconst VoteContractInput = CommonContractSchema.merge(VoteSettingsInputSchema);\nconst VoteContractOutput = CommonContractOutputSchema.merge(VoteSettingsOuputSchema);\nconst VoteContractDeploy = VoteContractInput.merge(CommonTrustedForwarderSchema);\nconst VoteContractSchema = {\n deploy: VoteContractDeploy,\n output: VoteContractOutput,\n input: VoteContractInput\n};\nz.object({\n proposalId: BigNumberSchema,\n proposer: z.string(),\n targets: z.array(z.string()),\n values: z.array(BigNumberSchema),\n signatures: z.array(z.string()),\n calldatas: z.array(z.string()),\n startBlock: BigNumberSchema,\n endBlock: BigNumberSchema,\n description: z.string()\n});\n\nconst PropertiesInput = z.object({}).catchall(z.union([BigNumberTransformSchema, z.unknown()]));\n\n/**\n * @internal\n */\nconst OptionalPropertiesInput = z.union([z.array(PropertiesInput), PropertiesInput]).optional();\n\n/**\n * @internal\n */\nconst EditionMetadataOutputSchema = z.object({\n supply: BigNumberSchema,\n metadata: CommonNFTOutput\n});\n\n/**\n * @internal\n */\nconst EditionMetadataWithOwnerOutputSchema = EditionMetadataOutputSchema.extend({\n owner: z.string(),\n quantityOwned: BigNumberSchema\n});\n\n/**\n * @internal\n */\nconst EditionMetadataInputSchema = z.object({\n supply: BigNumberishSchema,\n metadata: CommonNFTInput\n});\n\n/**\n * @internal\n */\nconst EditionMetadataInputOrUriSchema = z.object({\n supply: BigNumberishSchema,\n metadata: NFTInputOrUriSchema\n});\n\n/**\n * @public\n */\n\n/**\n * @internal\n */\nconst TokenMintInputSchema = z.object({\n toAddress: AddressSchema,\n amount: AmountSchema\n});\n\n/**\n * @public\n */\n\n/**\n * @public\n */\nconst SDKOptionsSchema = z.object({\n readonlySettings: z.object({\n rpcUrl: z.string().url(),\n chainId: z.number().optional()\n }).optional(),\n gasSettings: z.object({\n maxPriceInGwei: z.number().min(1, \"gas price cannot be less than 1\").default(300),\n speed: z.enum([\"standard\", \"fast\", \"fastest\"]).default(\"fastest\")\n }).default({\n maxPriceInGwei: 300,\n speed: \"fastest\"\n }),\n gasless: z.union([z.object({\n openzeppelin: z.object({\n relayerUrl: z.string().url(),\n relayerForwarderAddress: z.string().optional(),\n useEOAForwarder: z.boolean().default(false)\n }),\n experimentalChainlessSupport: z.boolean().default(false)\n }), z.object({\n biconomy: z.object({\n apiId: z.string(),\n apiKey: z.string(),\n deadlineSeconds: z.number().min(1, \"deadlineSeconds cannot be les than 1\").default(3600)\n })\n })]).optional()\n}).default({\n gasSettings: {\n maxPriceInGwei: 300,\n speed: \"fastest\"\n }\n});\n\n/**\n * @public\n * All these configuration options are optional with sane defaults:\n * @example\n * ```javascript\n * {\n * readonlySettings: {\n * rpcUrl, // force read calls to go through your own RPC url\n * chainId, // reduce RPC calls by sepcifying your chain ID\n * },\n * gasSettings: {\n * maxPriceInGwei, // Maximum gas price for transactions (default 300 gwei)\n * speed, // the tx speed setting: 'standard'|'fast|'fastest' (default: 'fastest')\n * },\n * gasless: {\n * // By specifying a gasless configuration - all transactions will get forwarded to enable gasless transactions\n * openzeppelin: {\n * relayerUrl, // your OZ Defender relayer URL\n * relayerForwarderAddress, // the OZ defender relayer address (defaults to the standard one)\n * },\n * biconomy: {\n * apiId, // your Biconomy API Id\n * apiKey, // your Biconomy API Key\n * deadlineSeconds, // your Biconomy timeout preference\n * },\n * },\n * }\n * ```\n */\n\n/**\n * @internal\n */\nconst ForwardRequest = [{\n name: \"from\",\n type: \"address\"\n}, {\n name: \"to\",\n type: \"address\"\n}, {\n name: \"value\",\n type: \"uint256\"\n}, {\n name: \"gas\",\n type: \"uint256\"\n}, {\n name: \"nonce\",\n type: \"uint256\"\n}, {\n name: \"data\",\n type: \"bytes\"\n}];\nconst ChainAwareForwardRequest = [{\n name: \"from\",\n type: \"address\"\n}, {\n name: \"to\",\n type: \"address\"\n}, {\n name: \"value\",\n type: \"uint256\"\n}, {\n name: \"gas\",\n type: \"uint256\"\n}, {\n name: \"nonce\",\n type: \"uint256\"\n}, {\n name: \"data\",\n type: \"bytes\"\n}, {\n name: \"chainid\",\n type: \"uint256\"\n}];\n\n/**\n * @internal\n */\nconst BiconomyForwarderAbi = [{\n inputs: [{\n internalType: \"address\",\n name: \"from\",\n type: \"address\"\n }, {\n internalType: \"uint256\",\n name: \"batchId\",\n type: \"uint256\"\n }],\n name: \"getNonce\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst _nonces = {};\nconst _noncesSyncTimestamp = {};\n\n/**\n * @internal\n */\nasync function getAndIncrementNonce(forwarder, forwarderFunction, forwarderArgs) {\n // address is only used for internal caching :)\n const address = forwarderArgs.join(\"|\");\n const timestamp = _noncesSyncTimestamp[address];\n // if it's within 2 seconds we're optimistically increment the nonce\n // should we always sync?\n const shouldSync = Date.now() - timestamp >= 2000;\n if (!(address in _nonces) || shouldSync) {\n const nonceResult = await forwarder.functions[forwarderFunction](...forwarderArgs);\n if (Array.isArray(nonceResult) && nonceResult.length > 0) {\n _nonces[address] = BigNumber.from(nonceResult[0]);\n } else {\n _nonces[address] = BigNumber.from(nonceResult);\n }\n _noncesSyncTimestamp[address] = Date.now();\n }\n const nonce = _nonces[address];\n _nonces[address] = BigNumber.from(_nonces[address]).add(1);\n return nonce;\n}\n\n/**\n * @internal\n */\nfunction getGasStationUrl(chainId) {\n switch (chainId) {\n case ChainId.Polygon:\n return \"https://gasstation-mainnet.matic.network/v2\";\n case ChainId.Mumbai:\n return \"https://gasstation-mumbai.matic.today/v2\";\n }\n}\nconst MIN_POLYGON_GAS_PRICE = ethers.utils.parseUnits(\"31\", \"gwei\");\nconst MIN_MUMBAI_GAS_PRICE = ethers.utils.parseUnits(\"1\", \"gwei\");\n\n/**\n * @internal\n */\nfunction getDefaultGasFee(chainId) {\n switch (chainId) {\n case ChainId.Polygon:\n return MIN_POLYGON_GAS_PRICE;\n case ChainId.Mumbai:\n return MIN_MUMBAI_GAS_PRICE;\n }\n}\n\n/**\n *\n * @returns the gas price\n * @internal\n */\nasync function getPolygonGasPriorityFee(chainId) {\n const gasStationUrl = getGasStationUrl(chainId);\n try {\n const data = await (await fetch$1(gasStationUrl)).json();\n // take the standard speed here, SDK options will define the extra tip\n const priorityFee = data[\"standard\"][\"maxPriorityFee\"];\n if (priorityFee > 0) {\n const fixedFee = parseFloat(priorityFee).toFixed(9);\n return ethers.utils.parseUnits(fixedFee, \"gwei\");\n }\n } catch (e) {\n console.error(\"failed to fetch gas\", e);\n }\n return getDefaultGasFee(chainId);\n}\n\n// couldn't find this in barbones ethers export, but \"type\" should mean it does not increase bundle size either way\n\n/**\n * @internal\n */\n\n/**\n * eip712 sign typed data with different wallet handling including ledger live\n * @internal\n */\nasync function signTypedDataInternal(signer, domain, types, message) {\n const provider = signer?.provider;\n if (!provider) {\n throw new Error(\"missing provider\");\n }\n const payload = ethers.utils._TypedDataEncoder.getPayload(domain, types, message);\n let signature = \"\";\n const signerAddress = (await signer.getAddress()).toLowerCase();\n\n // an indirect way for accessing walletconnect's underlying provider\n if (provider?.provider?.isWalletConnect) {\n signature = await provider.send(\"eth_signTypedData\", [(await signer.getAddress()).toLowerCase(), JSON.stringify(payload)]);\n } else {\n try {\n signature = await signer._signTypedData(domain, types, message);\n } catch (err) {\n if (err?.message?.includes(\"Method eth_signTypedData_v4 not supported\")) {\n signature = await provider.send(\"eth_signTypedData\", [signerAddress, JSON.stringify(payload)]);\n } else {\n // magic.link signer only supports this way\n try {\n await provider.send(\"eth_signTypedData_v4\", [signerAddress, JSON.stringify(payload)]);\n } catch (finalErr) {\n throw finalErr;\n }\n }\n }\n }\n\n // fix ledger live where signature result in v = 0, 1. ethers magically fix it in split/join.\n return {\n payload,\n signature: ethers.utils.joinSignature(ethers.utils.splitSignature(signature))\n };\n}\n\nconst NAME_ABI = [{\n inputs: [],\n name: \"name\",\n outputs: [{\n internalType: \"string\",\n name: \"\",\n type: \"string\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst DOMAIN_SEPARATOR_ABI = [{\n constant: true,\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\"\n }],\n payable: false,\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [],\n name: \"getDomainSeperator\",\n outputs: [{\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nconst NONCES_ABI = [{\n inputs: [{\n internalType: \"address\",\n name: \"owner\",\n type: \"address\"\n }],\n name: \"nonces\",\n outputs: [{\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}, {\n inputs: [{\n internalType: \"address\",\n name: \"user\",\n type: \"address\"\n }],\n name: \"getNonce\",\n outputs: [{\n internalType: \"uint256\",\n name: \"nonce\",\n type: \"uint256\"\n }],\n stateMutability: \"view\",\n type: \"function\"\n}];\nasync function getSignerNonce(signer, contractAddress) {\n const contract = new Contract(contractAddress, NONCES_ABI, signer);\n try {\n return await contract.nonces(await signer.getAddress());\n } catch (err) {\n return await contract.getNonce(await signer.getAddress());\n }\n}\nasync function getDomainSeperator(signer, contractAddress) {\n const contract = new Contract(contractAddress, DOMAIN_SEPARATOR_ABI, signer);\n try {\n return await contract.DOMAIN_SEPARATOR();\n } catch (err) {\n try {\n return await contract.getDomainSeperator();\n } catch (err2) {\n console.error('Error getting domain separator', err2);\n }\n }\n}\nasync function getTokenName(signer, contractAddress) {\n return new Contract(contractAddress, NAME_ABI, signer).name();\n}\n\n/**\n * Polygon chain has different EIP712 domain separator for USDC, DAI compared to other chains and slightly different than EIP-2612.\n */\nasync function getChainDomainSeperator(signer, domain) {\n const contractDomainSeparator = await getDomainSeperator(signer, domain.verifyingContract);\n const polygonDomain = {\n name: domain.name,\n version: domain.version,\n verifyingContract: domain.verifyingContract,\n salt: ethers.utils.hexZeroPad(BigNumber.from(domain.chainId).toHexString(), 32)\n };\n if (ethers.utils._TypedDataEncoder.hashDomain(polygonDomain) === contractDomainSeparator) {\n return polygonDomain;\n }\n return domain;\n}\n\n/**\n * @internal\n */\nasync function signEIP2612Permit(signer, currencyAddress, owner, spender, value, deadline, nonce) {\n const domain = await getChainDomainSeperator(signer, {\n name: await getTokenName(signer, currencyAddress),\n version: \"1\",\n chainId: await signer.getChainId(),\n verifyingContract: currencyAddress\n });\n nonce = nonce || (await getSignerNonce(signer, currencyAddress)).toString();\n deadline = deadline || ethers.constants.MaxUint256;\n const message = {\n owner,\n spender,\n value,\n nonce,\n deadline\n };\n const types = {\n Permit: [{\n name: \"owner\",\n type: \"address\"\n }, {\n name: \"spender\",\n type: \"address\"\n }, {\n name: \"value\",\n type: \"uint256\"\n }, {\n name: \"nonce\",\n type: \"uint256\"\n }, {\n name: \"deadline\",\n type: \"uint256\"\n }]\n };\n const {\n signature\n } = await signTypedDataInternal(signer, domain, types, message);\n return {\n message,\n signature\n };\n}\n\n/**\n * @internal\n */\n// @ts-expext-error window is not defined\nconst isBrowser = () => typeof window !== \"undefined\";\n\n/**\n * @internal\n */\nconst isNode = () => !isBrowser();\n\n/**\n * @internal\n */\nfunction unique(a, fn) {\n if (a.length === 0 || a.length === 1) {\n return a;\n }\n if (!fn) {\n return a;\n }\n for (let i = 0; i < a.length; i++) {\n for (let j = i + 1; j < a.length; j++) {\n if (fn(a[i], a[j])) {\n a.splice(j, 1);\n }\n }\n }\n return a;\n}\n\n/**\n * @internal\n */\nclass RPCConnectionHandler extends EventEmitter {\n constructor(network, options) {\n super();\n _defineProperty(this, \"provider\", void 0);\n _defineProperty(this, \"signer\", void 0);\n _defineProperty(this, \"options\", void 0);\n const [signer, provider] = getSignerAndProvider(network, options);\n this.signer = signer;\n this.provider = provider;\n try {\n this.options = SDKOptionsSchema.parse(options);\n } catch (optionParseError) {\n console.error(\"invalid sdk options object passed, falling back to default options\", optionParseError);\n this.options = SDKOptionsSchema.parse({});\n }\n }\n /**\n * The function to call whenever the network changes, such as when the users connects their wallet, disconnects their wallet, the connected chain changes, etc.\n *\n * @param network - a network, signer or provider that ethers js can interpret\n */\n updateSignerOrProvider(network) {\n const [signer, provider] = getSignerAndProvider(network, this.options);\n this.signer = signer;\n this.provider = provider;\n }\n /**\n *\n * @returns whether or not a signer is set, `true` if there is no signer so the class is in \"read only\" mode\n */\n isReadOnly() {\n return !Signer.isSigner(this.signer);\n }\n\n /**\n * Explicitly get the active signer.\n * @returns the active signer, if there is one\n */\n getSigner() {\n return this.signer;\n }\n\n /**\n * Explicitly get the active provider.\n * @returns the active provider\n */\n getProvider() {\n return this.provider;\n }\n\n /**\n *\n * @returns the current signer if there is one, otherwise the active provider\n */\n getSignerOrProvider() {\n return this.getSigner() || this.getProvider();\n }\n}\n\n/**\n * @internal\n */\nfunction getSignerAndProvider(network, options) {\n let signer;\n let provider;\n if (Signer.isSigner(network)) {\n signer = network;\n if (network.provider) {\n provider = network.provider;\n }\n }\n if (options?.readonlySettings) {\n provider = getReadOnlyProvider(options.readonlySettings.rpcUrl, options.readonlySettings.chainId);\n }\n if (!provider) {\n if (providers.Provider.isProvider(network)) {\n provider = network;\n } else if (!Signer.isSigner(network)) {\n if (typeof network === \"string\") {\n provider = getReadOnlyProvider(network, options?.readonlySettings?.chainId);\n } else {\n // no a signer, not a provider, not a string? try with default provider\n provider = ethers.getDefaultProvider(network);\n }\n }\n }\n if (!provider) {\n // we should really never hit this case!\n provider = ethers.getDefaultProvider();\n console.error(\"No provider found, using default provider on default chain!\");\n }\n return [signer, provider];\n}\n\n/**\n * @internal\n */\nvar _storage = /*#__PURE__*/new WeakMap();\nclass ContractWrapper extends RPCConnectionHandler {\n // TOOO: In another PR, make this storage private, and have extending classes pass\n // down storage to be stored in contract wrapper.\n\n /**\n * @internal\n */\n\n constructor(network, contractAddress, contractAbi, options) {\n super(network, options);\n _classPrivateFieldInitSpec(this, _storage, {\n writable: true,\n value: void 0\n });\n _defineProperty(this, \"isValidContract\", false);\n _defineProperty(this, \"customOverrides\", () => ({}));\n _defineProperty(this, \"writeContract\", void 0);\n _defineProperty(this, \"readContract\", void 0);\n _defineProperty(this, \"abi\", void 0);\n this.abi = contractAbi;\n // set up the contract\n this.writeContract = new Contract(contractAddress, contractAbi, this.getSignerOrProvider());\n // setup the read only contract\n this.readContract = this.writeContract.connect(this.getProvider());\n _classPrivateFieldSet(this, _storage, new ThirdwebStorage());\n }\n updateSignerOrProvider(network) {\n // update the underlying base class\n super.updateSignerOrProvider(network);\n // re-connect the contract with the new signer / provider\n this.writeContract = this.writeContract.connect(this.getSignerOrProvider());\n // setup the read only contract\n this.readContract = this.writeContract.connect(this.getProvider());\n }\n\n /**\n * @internal\n */\n async getChainID() {\n const provider = this.getProvider();\n const {\n chainId\n } = await provider.getNetwork();\n return chainId;\n }\n /**\n * @internal\n */\n async getSignerAddress() {\n const signer = this.getSigner();\n if (!signer) {\n throw new Error(\"This action requires a connected wallet to sign the transaction. Please pass a valid signer to the SDK.\");\n }\n return await signer.getAddress();\n }\n\n /**\n * @internal\n */\n callStatic() {\n return this.writeContract.callStatic;\n }\n\n /**\n * @internal\n */\n async getCallOverrides() {\n if (isBrowser()) {\n // When running in the browser, let the wallet suggest gas estimates\n // this means that the gas speed preferences set in the SDK options are ignored in a browser context\n // but it also allows users to select their own gas speed prefs per tx from their wallet directly\n return {};\n }\n const feeData = await this.getProvider().getFeeData();\n const supports1559 = feeData.maxFeePerGas && feeData.maxPriorityFeePerGas;\n if (supports1559) {\n const chainId = await this.getChainID();\n const block = await this.getProvider().getBlock(\"latest\");\n const baseBlockFee = block && block.baseFeePerGas ? block.baseFeePerGas : ethers.utils.parseUnits(\"1\", \"gwei\");\n let defaultPriorityFee;\n if (chainId === ChainId.Mumbai || chainId === ChainId.Polygon) {\n // for polygon, get fee data from gas station\n defaultPriorityFee = await getPolygonGasPriorityFee(chainId);\n } else {\n // otherwise get it from ethers\n defaultPriorityFee = BigNumber.from(feeData.maxPriorityFeePerGas);\n }\n // then add additional fee based on user preferences\n const maxPriorityFeePerGas = this.getPreferredPriorityFee(defaultPriorityFee);\n // See: https://eips.ethereum.org/EIPS/eip-1559 for formula\n const baseMaxFeePerGas = baseBlockFee.mul(2);\n const maxFeePerGas = baseMaxFeePerGas.add(maxPriorityFeePerGas);\n return {\n maxFeePerGas,\n maxPriorityFeePerGas\n };\n } else {\n return {\n gasPrice: await this.getPreferredGasPrice()\n };\n }\n }\n\n /**\n * Calculates the priority fee per gas according to user preferences\n * @param defaultPriorityFeePerGas - the base priority fee\n */\n getPreferredPriorityFee(defaultPriorityFeePerGas) {\n const speed = this.options.gasSettings.speed;\n const maxGasPrice = this.options.gasSettings.maxPriceInGwei;\n let extraTip;\n switch (speed) {\n case \"standard\":\n extraTip = BigNumber.from(0); // default is 2.5 gwei for ETH, 31 gwei for polygon\n break;\n case \"fast\":\n extraTip = defaultPriorityFeePerGas.div(100).mul(5); // + 5% - 2.625 gwei / 32.5 gwei\n break;\n case \"fastest\":\n extraTip = defaultPriorityFeePerGas.div(100).mul(10); // + 10% - 2.75 gwei / 34.1 gwei\n break;\n }\n let txGasPrice = defaultPriorityFeePerGas.add(extraTip);\n const max = ethers.utils.parseUnits(maxGasPrice.toString(), \"gwei\"); // no more than max gas setting\n const min = ethers.utils.parseUnits(\"2.5\", \"gwei\"); // no less than 2.5 gwei\n if (txGasPrice.gt(max)) {\n txGasPrice = max;\n }\n if (txGasPrice.lt(min)) {\n txGasPrice = min;\n }\n return txGasPrice;\n }\n\n /**\n * Calculates the gas price for transactions according to user preferences\n */\n async getPreferredGasPrice() {\n const gasPrice = await this.getProvider().getGasPrice();\n const speed = this.options.gasSettings.speed;\n const maxGasPrice = this.options.gasSettings.maxPriceInGwei;\n let txGasPrice = gasPrice;\n let extraTip;\n switch (speed) {\n case \"standard\":\n extraTip = BigNumber.from(1); // min 1 wei\n break;\n case \"fast\":\n extraTip = gasPrice.div(100).mul(5); // + 5%\n break;\n case \"fastest\":\n extraTip = gasPrice.div(100).mul(10); // + 10%\n break;\n }\n txGasPrice = txGasPrice.add(extraTip);\n const max = ethers.utils.parseUnits(maxGasPrice.toString(), \"gwei\");\n if (txGasPrice.gt(max)) {\n txGasPrice = max;\n }\n return txGasPrice;\n }\n\n /**\n * @internal\n */\n emitTransactionEvent(status, transactionHash) {\n this.emit(EventType.Transaction, {\n status,\n transactionHash\n });\n }\n\n /**\n * @internal\n */\n async multiCall(encoded) {\n return this.sendTransaction(\"multicall\", [encoded]);\n }\n\n /**\n * @internal\n */\n async estimateGas(fn, args) {\n return this.writeContract.estimateGas[fn](...args);\n }\n\n /**\n * @internal\n */\n withTransactionOverride(hook) {\n this.customOverrides = hook;\n }\n\n /**\n * @internal\n */\n async call(functionName) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n // parse last arg as tx options if present\n let txOptions;\n try {\n if (args.length > 0 && typeof args[args.length - 1] === \"object\") {\n const last = args[args.length - 1];\n txOptions = CallOverrideSchema.parse(last);\n // if call overrides found, remove it from args array\n args = args.slice(0, args.length - 1);\n }\n } catch (e) {\n // no-op\n }\n const functions = extractFunctionsFromAbi(AbiSchema.parse(this.abi)).filter(f => f.name === functionName);\n if (!functions.length) {\n throw new Error(`Function \"${functionName}\" not found in contract. Check your dashboard for the list of functions available`);\n }\n const fn = functions.find(f => f.name === functionName && f.inputs.length === args.length);\n\n // TODO extract this and re-use for deploy function to check constructor args\n if (!fn) {\n throw new Error(`Function \"${functionName}\" requires ${functions[0].inputs.length} arguments, but ${args.length} were provided.\\nExpected function signature: ${functions[0].signature}`);\n }\n const ethersFnName = `${functionName}(${fn.inputs.map(i => i.type).join()})`;\n\n // check if the function exists on the contract, otherwise use the name passed in\n const fnName = ethersFnName in this.readContract.functions ? ethersFnName : functionName;\n\n // TODO validate each argument\n if (fn.stateMutability === \"view\" || fn.stateMutability === \"pure\") {\n // read function\n return this.readContract[fnName](...args);\n } else {\n // write function\n const receipt = await this.sendTransaction(fnName, args, txOptions);\n return {\n receipt\n };\n }\n }\n\n /**\n * @internal\n */\n async sendTransaction(fn, args, callOverrides) {\n if (!callOverrides) {\n callOverrides = await this.getCallOverrides();\n }\n // if a custom override is set, merge our override with the custom one\n callOverrides = {\n ...callOverrides,\n ...this.customOverrides()\n };\n // clear up the override (single use)\n this.customOverrides = () => ({});\n if (this.options?.gasless && (\"openzeppelin\" in this.options.gasless || \"biconomy\" in this.options.gasless)) {\n if (fn === \"multicall\" && Array.isArray(args[0]) && args[0].length > 0) {\n const from = await this.getSignerAddress();\n args[0] = args[0].map(tx => ethers.utils.solidityPack([\"bytes\", \"address\"], [tx, from]));\n }\n const provider = this.getProvider();\n const txHash = await this.sendGaslessTransaction(fn, args, callOverrides);\n this.emitTransactionEvent(\"submitted\", txHash);\n const receipt = await provider.waitForTransaction(txHash);\n this.emitTransactionEvent(\"completed\", txHash);\n return receipt;\n } else {\n // one time verification that this is a valid contract (to avoid sending funds to wrong addresses)\n if (!this.isValidContract) {\n const code = await this.getProvider().getCode(this.readContract.address);\n this.isValidContract = code !== \"0x\";\n if (!this.isValidContract) {\n throw new Error(\"The address you're trying to send a transaction to is not a smart contract. Make sure you are on the correct network and the contract address is correct\");\n }\n }\n const tx = await this.sendTransactionByFunction(fn, args, callOverrides);\n this.emitTransactionEvent(\"submitted\", tx.hash);\n\n // tx.wait() can fail so we need to wrap it with a catch\n let receipt;\n try {\n receipt = await tx.wait();\n } catch (err) {\n try {\n // If tx.wait() fails, it just gives us a generic \"transaction failed\"\n // error. So instead, we need to call static to get an informative error message\n await this.writeContract.callStatic[fn](...args, ...(callOverrides.value ? [{\n value: callOverrides.value\n }] : []));\n } catch (staticErr) {\n throw await this.formatError(staticErr, fn, args, callOverrides);\n }\n throw await this.formatError(err, fn, args, callOverrides);\n }\n this.emitTransactionEvent(\"completed\", tx.hash);\n return receipt;\n }\n }\n\n /**\n * @internal\n */\n async sendTransactionByFunction(fn, args, callOverrides) {\n const func = this.writeContract.functions[fn];\n if (!func) {\n throw new Error(`invalid function: \"${fn.toString()}\"`);\n }\n\n // First, if no gasLimit is passed, call estimate gas ourselves\n if (!callOverrides.gasLimit) {\n try {\n callOverrides.gasLimit = await this.writeContract.estimateGas[fn](...args, callOverrides);\n } catch (e) {\n // If gas estimation fails, we'll call static to get a better error message\n try {\n await this.writeContract.callStatic[fn](...args, ...(callOverrides.value ? [{\n value: callOverrides.value\n }] : []));\n } catch (err) {\n throw await this.formatError(err, fn, args, callOverrides);\n }\n }\n }\n\n // Now there should be no gas estimate errors\n try {\n return await func(...args, callOverrides);\n } catch (err) {\n const from = await (callOverrides.from || this.getSignerAddress());\n const value = await (callOverrides.value ? callOverrides.value : 0);\n const balance = await this.getProvider().getBalance(from);\n if (balance.eq(0) || value && balance.lt(value)) {\n throw await this.formatError(new Error(\"You have insufficient funds in your account to execute this transaction.\"), fn, args, callOverrides);\n }\n throw await this.formatError(err, fn, args, callOverrides);\n }\n }\n async formatError(error, fn, args, callOverrides) {\n const provider = this.getProvider();\n\n // Get metadata for transaction to populate into error\n const network = await provider.getNetwork();\n const from = await (callOverrides.from || this.getSignerAddress());\n const to = this.readContract.address;\n const data = this.readContract.interface.encodeFunctionData(fn, args);\n const value = BigNumber.from(callOverrides.value || 0);\n const rpcUrl = provider.connection?.url;\n\n // Render function signature with arguments filled in\n const functionSignature = this.readContract.interface.getFunction(fn);\n const methodArgs = args.map(arg => {\n if (JSON.stringify(arg).length <= 80) {\n return JSON.stringify(arg);\n }\n return JSON.stringify(arg, undefined, 2);\n });\n const joinedArgs = methodArgs.join(\", \").length <= 80 ? methodArgs.join(\", \") : \"\\n\" + methodArgs.map(arg => \" \" + arg.split(\"\\n\").join(\"\\n \")).join(\",\\n\") + \"\\n\";\n const method = `${functionSignature.name}(${joinedArgs})`;\n const hash = error.transactionHash || error.transaction?.hash || error.receipt?.transactionHash;\n\n // Parse the revert reason from the error\n const reason = parseRevertReason(error);\n\n // Get contract sources for stack trace\n let sources = undefined;\n let contractName = undefined;\n try {\n const metadata = await fetchContractMetadataFromAddress(this.readContract.address, this.getProvider(), _classPrivateFieldGet(this, _storage));\n if (metadata.name) {\n contractName = metadata.name;\n }\n if (metadata.metadata.sources) {\n sources = await fetchSourceFilesFromMetadata(metadata, _classPrivateFieldGet(this, _storage));\n }\n } catch (err) {\n // no-op\n }\n return new TransactionError({\n reason,\n from,\n to,\n method,\n data,\n network,\n rpcUrl,\n value,\n hash,\n contractName,\n sources\n });\n }\n\n /**\n * @internal\n */\n async sendGaslessTransaction(fn) {\n let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let callOverrides = arguments.length > 2 ? arguments[2] : undefined;\n const signer = this.getSigner();\n invariant(signer, \"Cannot execute gasless transaction without valid signer\");\n const chainId = await this.getChainID();\n const from = await this.getSignerAddress();\n const to = this.writeContract.address;\n const value = callOverrides?.value || 0;\n if (BigNumber.from(value).gt(0)) {\n throw new Error(\"Cannot send native token value with gasless transaction\");\n }\n const data = this.writeContract.interface.encodeFunctionData(fn, args);\n let gas = BigNumber.from(0);\n try {\n const gasEstimate = await this.readContract.estimateGas[fn](...args);\n gas = gasEstimate.mul(2);\n } catch (e) {\n // ignore\n }\n\n // in some cases WalletConnect doesn't properly gives an estimate for how much gas it would actually use.\n // as a fix, we're setting it to a high arbitrary number (500k) as the gas limit that should cover for most function calls.\n if (gas.lt(100000)) {\n gas = BigNumber.from(500000);\n }\n\n // check for gas override in callOverrides\n if (callOverrides.gasLimit && BigNumber.from(callOverrides.gasLimit).gt(gas)) {\n gas = BigNumber.from(callOverrides.gasLimit);\n }\n const tx = {\n from,\n to,\n data,\n chainId,\n gasLimit: gas,\n functionName: fn.toString(),\n functionArgs: args,\n callOverrides\n };\n return await this.defaultGaslessSendFunction(tx);\n }\n async signTypedData(signer, domain, types, message) {\n this.emit(EventType.Signature, {\n status: \"submitted\",\n message,\n signature: \"\"\n });\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n this.emit(EventType.Signature, {\n status: \"completed\",\n message,\n signature: sig\n });\n return sig;\n }\n parseLogs(eventName, logs) {\n if (!logs || logs.length === 0) {\n return [];\n }\n const topic = this.writeContract.interface.getEventTopic(eventName);\n const parsedLogs = logs.filter(x => x.topics.indexOf(topic) >= 0);\n return parsedLogs.map(l => this.writeContract.interface.parseLog(l));\n }\n async defaultGaslessSendFunction(transaction) {\n if (this.options.gasless && \"biconomy\" in this.options.gasless) {\n return this.biconomySendFunction(transaction);\n }\n return this.defenderSendFunction(transaction);\n }\n async biconomySendFunction(transaction) {\n invariant(this.options.gasless && \"biconomy\" in this.options.gasless, \"calling biconomySendFunction without biconomy\");\n const signer = this.getSigner();\n const provider = this.getProvider();\n invariant(signer && provider, \"signer and provider must be set\");\n const forwarder = new ethers.Contract(getContractAddressByChainId(transaction.chainId, \"biconomyForwarder\"), BiconomyForwarderAbi, provider);\n const batchId = 0;\n const batchNonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from, batchId]);\n const request = {\n from: transaction.from,\n to: transaction.to,\n token: ethers.constants.AddressZero,\n txGas: transaction.gasLimit.toNumber(),\n tokenGasPrice: \"0\",\n batchId,\n batchNonce: batchNonce.toNumber(),\n deadline: Math.floor(Date.now() / 1000 + (this.options?.gasless && \"biconomy\" in this.options.gasless && this.options.gasless.biconomy?.deadlineSeconds || 3600)),\n data: transaction.data\n };\n const hashToSign = ethers.utils.arrayify(ethers.utils.solidityKeccak256([\"address\", \"address\", \"address\", \"uint256\", \"uint256\", \"uint256\", \"uint256\", \"uint256\", \"bytes32\"], [request.from, request.to, request.token, request.txGas, request.tokenGasPrice, request.batchId, request.batchNonce, request.deadline, ethers.utils.keccak256(request.data)]));\n this.emit(EventType.Signature, {\n status: \"submitted\",\n message: hashToSign,\n signature: \"\"\n });\n const signature = await signer.signMessage(hashToSign);\n this.emit(EventType.Signature, {\n status: \"completed\",\n message: hashToSign,\n signature\n });\n const response = await fetch$1(\"https://api.biconomy.io/api/v2/meta-tx/native\", {\n method: \"POST\",\n body: JSON.stringify({\n from: transaction.from,\n apiId: this.options.gasless.biconomy.apiId,\n params: [request, signature],\n to: transaction.to,\n gasLimit: transaction.gasLimit.toHexString()\n }),\n headers: {\n \"x-api-key\": this.options.gasless.biconomy.apiKey,\n \"Content-Type\": \"application/json;charset=utf-8\"\n }\n });\n if (response.ok) {\n const resp = await response.json();\n if (!resp.txHash) {\n throw new Error(`relay transaction failed: ${resp.log}`);\n }\n return resp.txHash;\n }\n throw new Error(`relay transaction failed with status: ${response.status} (${response.statusText})`);\n }\n async defenderSendFunction(transaction) {\n invariant(this.options.gasless && \"openzeppelin\" in this.options.gasless, \"calling openzeppelin gasless transaction without openzeppelin config in the SDK options\");\n const signer = this.getSigner();\n const provider = this.getProvider();\n invariant(signer, \"provider is not set\");\n invariant(provider, \"provider is not set\");\n const forwarderAddress = this.options.gasless.openzeppelin.relayerForwarderAddress || (this.options.gasless.openzeppelin.useEOAForwarder ? CONTRACT_ADDRESSES[transaction.chainId].openzeppelinForwarderEOA : CONTRACT_ADDRESSES[transaction.chainId].openzeppelinForwarder);\n const forwarder = new Contract(forwarderAddress, ForwarderABI, provider);\n const nonce = await getAndIncrementNonce(forwarder, \"getNonce\", [transaction.from]);\n let domain;\n let types;\n let message;\n if (this.options.gasless.experimentalChainlessSupport) {\n domain = {\n name: \"GSNv2 Forwarder\",\n version: \"0.0.1\",\n verifyingContract: forwarderAddress\n };\n types = {\n ForwardRequest: ChainAwareForwardRequest\n };\n message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data,\n chainid: BigNumber.from(transaction.chainId).toString()\n };\n } else {\n domain = {\n name: \"GSNv2 Forwarder\",\n version: \"0.0.1\",\n chainId: transaction.chainId,\n verifyingContract: forwarderAddress\n };\n types = {\n ForwardRequest\n };\n message = {\n from: transaction.from,\n to: transaction.to,\n value: BigNumber.from(0).toString(),\n gas: BigNumber.from(transaction.gasLimit).toString(),\n nonce: BigNumber.from(nonce).toString(),\n data: transaction.data\n };\n }\n let signature;\n this.emit(EventType.Signature, {\n status: \"submitted\",\n message,\n signature: \"\"\n });\n\n // if the executing function is \"approve\" and matches with erc20 approve signature\n // and if the token supports permit, then we use permit for gasless instead of approve.\n if (transaction.functionName === \"approve\" && transaction.functionArgs.length === 2) {\n const spender = transaction.functionArgs[0];\n const amount = transaction.functionArgs[1];\n // TODO: support DAI permit by signDAIPermit\n const {\n message: permit,\n signature: sig\n } = await signEIP2612Permit(signer, this.writeContract.address, transaction.from, spender, amount);\n const {\n r,\n s,\n v\n } = ethers.utils.splitSignature(sig);\n message = {\n to: this.readContract.address,\n owner: permit.owner,\n spender: permit.spender,\n value: BigNumber.from(permit.value).toString(),\n nonce: BigNumber.from(permit.nonce).toString(),\n deadline: BigNumber.from(permit.deadline).toString(),\n r,\n s,\n v\n };\n signature = sig;\n } else {\n const {\n signature: sig\n } = await signTypedDataInternal(signer, domain, types, message);\n signature = sig;\n }\n let messageType = \"forward\";\n\n // if has owner property then it's permit :)\n if (message?.owner) {\n messageType = \"permit\";\n }\n const body = JSON.stringify({\n request: message,\n signature,\n forwarderAddress,\n type: messageType\n });\n this.emit(EventType.Signature, {\n status: \"completed\",\n message,\n signature\n });\n const response = await fetch$1(this.options.gasless.openzeppelin.relayerUrl, {\n method: \"POST\",\n body\n });\n if (response.ok) {\n const resp = await response.json();\n if (!resp.result) {\n throw new Error(`Relay transaction failed: ${resp.message}`);\n }\n const result = JSON.parse(resp.result);\n return result.txHash;\n }\n throw new Error(`relay transaction failed with status: ${response.status} (${response.statusText})`);\n }\n}\n\nfunction isNativeToken(tokenAddress) {\n return tokenAddress.toLowerCase() === NATIVE_TOKEN_ADDRESS || tokenAddress.toLowerCase() === constants.AddressZero;\n}\nfunction cleanCurrencyAddress(currencyAddress) {\n if (isNativeToken(currencyAddress)) {\n return NATIVE_TOKEN_ADDRESS;\n }\n return currencyAddress;\n}\n\n/**\n *\n * @param provider\n * @param inputPrice\n * @param currencyAddress\n * @returns\n * @internal\n */\nasync function normalizePriceValue(provider, inputPrice, currencyAddress) {\n const metadata = await fetchCurrencyMetadata(provider, currencyAddress);\n return utils.parseUnits(AmountSchema.parse(inputPrice), metadata.decimals);\n}\n\n/**\n *\n * @param provider\n * @param asset\n * @returns\n * @internal\n */\nasync function fetchCurrencyMetadata(provider, asset) {\n if (isNativeToken(asset)) {\n const network = await provider.getNetwork();\n const nativeToken = getNativeTokenByChainId(network.chainId);\n return {\n name: nativeToken.name,\n symbol: nativeToken.symbol,\n decimals: nativeToken.decimals\n };\n } else {\n const erc20 = new Contract(asset, ERC20MetadataAbi, provider);\n const [name, symbol, decimals] = await Promise.all([erc20.name(), erc20.symbol(), erc20.decimals()]);\n return {\n name,\n symbol,\n decimals\n };\n }\n}\n\n/**\n *\n * @param providerOrSigner\n * @param asset\n * @param price\n * @returns\n * @internal\n */\nasync function fetchCurrencyValue(providerOrSigner, asset, price) {\n const metadata = await fetchCurrencyMetadata(providerOrSigner, asset);\n return {\n ...metadata,\n value: BigNumber.from(price),\n displayValue: utils.formatUnits(price, metadata.decimals)\n };\n}\nasync function setErc20Allowance(contractToApprove, value, currencyAddress, overrides) {\n if (isNativeToken(currencyAddress)) {\n overrides[\"value\"] = value;\n } else {\n const signer = contractToApprove.getSigner();\n const provider = contractToApprove.getProvider();\n const erc20 = new ContractWrapper(signer || provider, currencyAddress, ERC20Abi, contractToApprove.options);\n const owner = await contractToApprove.getSignerAddress();\n const spender = contractToApprove.readContract.address;\n const allowance = await erc20.readContract.allowance(owner, spender);\n if (allowance.lt(value)) {\n // approve overrides the previous allowance, set it to the minimum required for this tx\n await erc20.sendTransaction(\"approve\", [spender, value]);\n }\n return overrides;\n }\n}\nasync function approveErc20Allowance(contractToApprove, currencyAddress, price, quantity, tokenDecimals) {\n const signer = contractToApprove.getSigner();\n const provider = contractToApprove.getProvider();\n const erc20 = new ContractWrapper(signer || provider, currencyAddress, ERC20Abi, contractToApprove.options);\n const owner = await contractToApprove.getSignerAddress();\n const spender = contractToApprove.readContract.address;\n const allowance = await erc20.readContract.allowance(owner, spender);\n const totalPrice = BigNumber.from(price).mul(BigNumber.from(quantity)).div(ethers.utils.parseUnits(\"1\", tokenDecimals));\n if (allowance.lt(totalPrice)) {\n await erc20.sendTransaction(\"approve\", [spender, allowance.add(totalPrice)]);\n }\n}\nasync function hasERC20Allowance(contractToApprove, currencyAddress, value) {\n const provider = contractToApprove.getProvider();\n const erc20 = new ContractWrapper(provider, currencyAddress, ERC20Abi, {});\n const owner = await contractToApprove.getSignerAddress();\n const spender = contractToApprove.readContract.address;\n const allowance = await erc20.readContract.allowance(owner, spender);\n return allowance.gte(value);\n}\n\n/**\n * Returns proofs and the overrides required for the transaction.\n * @internal\n * @returns - `overrides` and `proofs` as an object.\n */\nasync function prepareClaim(addressToClaim, quantity, activeClaimCondition, merkleMetadataFetcher, tokenDecimals, contractWrapper, storage, checkERC20Allowance, snapshotFormatVersion) {\n let maxClaimable = convertQuantityToBigNumber(activeClaimCondition.maxClaimablePerWallet, tokenDecimals);\n let proofs = [utils.hexZeroPad([0], 32)];\n let priceInProof = activeClaimCondition.price; // the price to send to the contract in claim proofs\n let currencyAddressInProof = activeClaimCondition.currencyAddress;\n try {\n if (!activeClaimCondition.merkleRootHash.toString().startsWith(constants.AddressZero)) {\n const snapshotEntry = await fetchSnapshotEntryForAddress(addressToClaim, activeClaimCondition.merkleRootHash.toString(), await merkleMetadataFetcher(), contractWrapper.getProvider(), storage, snapshotFormatVersion);\n if (snapshotEntry) {\n proofs = snapshotEntry.proof;\n // override only if not default values (unlimited for quantity, zero addr for currency)\n maxClaimable = snapshotEntry.maxClaimable === \"unlimited\" ? ethers.constants.MaxUint256 : ethers.utils.parseUnits(snapshotEntry.maxClaimable, tokenDecimals);\n priceInProof = snapshotEntry.price === undefined || snapshotEntry.price === \"unlimited\" ? ethers.constants.MaxUint256 : await normalizePriceValue(contractWrapper.getProvider(), snapshotEntry.price, snapshotEntry.currencyAddress || ethers.constants.AddressZero);\n currencyAddressInProof = snapshotEntry.currencyAddress || ethers.constants.AddressZero;\n } else {\n // if no snapshot entry, and it's a v1 format (exclusive allowlist) then address can't claim\n if (snapshotFormatVersion === SnapshotFormatVersion.V1) {\n throw new Error(\"No claim found for this address\");\n }\n // but if its snapshot v2 (override list behavior) then address can still claim with default settings\n }\n }\n } catch (e) {\n // have to handle the valid error case that we *do* want to throw on\n if (e?.message === \"No claim found for this address\") {\n throw e;\n }\n // other errors we wanna ignore and try to continue\n console.warn(\"failed to check claim condition merkle root hash, continuing anyways\", e);\n }\n const overrides = (await contractWrapper.getCallOverrides()) || {};\n // the actual price to check allowance against\n // if proof price is unlimited, then we use the price from the claim condition\n // this mimics the contract behavior\n const pricePerToken = priceInProof.toString() !== ethers.constants.MaxUint256.toString() ? priceInProof : activeClaimCondition.price;\n // same for currency address\n const currencyAddress = currencyAddressInProof !== ethers.constants.AddressZero ? currencyAddressInProof : activeClaimCondition.currencyAddress;\n if (pricePerToken.gt(0)) {\n if (isNativeToken(currencyAddress)) {\n overrides[\"value\"] = BigNumber.from(pricePerToken).mul(quantity).div(ethers.utils.parseUnits(\"1\", tokenDecimals));\n } else if (checkERC20Allowance) {\n await approveErc20Allowance(contractWrapper, currencyAddress, pricePerToken, quantity, tokenDecimals);\n }\n }\n return {\n overrides,\n proofs,\n maxClaimable,\n price: pricePerToken,\n currencyAddress: currencyAddress,\n priceInProof,\n currencyAddressInProof\n };\n}\n\n/**\n * @internal\n * @param merkleRoot\n * @param merkleMetadata\n * @param storage\n */\nasync function fetchSnapshot(merkleRoot, merkleMetadata, storage) {\n if (!merkleMetadata) {\n return null;\n }\n const snapshotUri = merkleMetadata[merkleRoot];\n if (snapshotUri) {\n const raw = await storage.downloadJSON(snapshotUri);\n if (raw.isShardedMerkleTree && raw.merkleRoot === merkleRoot) {\n const smt = await ShardedMerkleTree.fromUri(snapshotUri, storage);\n return smt?.getAllEntries() || null;\n } else {\n const snapshotData = SnapshotSchema.parse(raw);\n if (merkleRoot === snapshotData.merkleRoot) {\n return snapshotData.claims.map(claim => ({\n address: claim.address,\n maxClaimable: claim.maxClaimable,\n price: claim.price,\n currencyAddress: claim.currencyAddress\n }));\n }\n }\n }\n return null;\n}\nasync function fetchSnapshotEntryForAddress(address, merkleRoot, merkleMetadata, provider, storage, snapshotFormatVersion) {\n if (!merkleMetadata) {\n return null;\n }\n const snapshotUri = merkleMetadata[merkleRoot];\n if (snapshotUri) {\n const raw = await storage.downloadJSON(snapshotUri);\n if (raw.isShardedMerkleTree && raw.merkleRoot === merkleRoot) {\n const merkleTree = await ShardedMerkleTree.fromShardedMerkleTreeInfo(raw, storage);\n return await merkleTree.getProof(address, provider, snapshotFormatVersion);\n }\n // legacy non-sharded, just fetch it all and filter out\n const snapshotData = SnapshotSchema.parse(raw);\n if (merkleRoot === snapshotData.merkleRoot) {\n return snapshotData.claims.find(c => c.address.toLowerCase() === address.toLowerCase()) || null;\n }\n }\n return null;\n}\n\n/**\n * @internal\n * @param index\n * @param claimConditionInput\n * @param existingConditions\n */\nasync function updateExistingClaimConditions(index, claimConditionInput, existingConditions) {\n if (index >= existingConditions.length) {\n throw Error(`Index out of bounds - got index: ${index} with ${existingConditions.length} conditions`);\n }\n // merge input with existing claim condition\n const priceDecimals = existingConditions[index].currencyMetadata.decimals;\n const priceInWei = existingConditions[index].price;\n const priceInTokens = ethers.utils.formatUnits(priceInWei, priceDecimals);\n\n // merge existing (output format) with incoming (input format)\n const newConditionParsed = ClaimConditionInputSchema.parse({\n ...existingConditions[index],\n price: priceInTokens,\n ...claimConditionInput\n });\n\n // convert to output claim condition\n const mergedConditionOutput = ClaimConditionOutputSchema.parse({\n ...newConditionParsed,\n price: priceInWei\n });\n return existingConditions.map((existingOutput, i) => {\n let newConditionAtIndex;\n if (i === index) {\n newConditionAtIndex = mergedConditionOutput;\n } else {\n newConditionAtIndex = existingOutput;\n }\n const formattedPrice = ethers.utils.formatUnits(newConditionAtIndex.price, priceDecimals);\n return {\n ...newConditionAtIndex,\n price: formattedPrice // manually transform back to input price type\n };\n });\n}\n\n/**\n * @internal\n * Decorates claim conditions with merkle roots from snapshots if present\n * @param claimConditionInputs\n * @param tokenDecimals\n * @param provider\n * @param storage\n * @param snapshotFormatVersion\n */\nasync function processSnapshotData(claimConditionInputs, tokenDecimals, provider, storage, snapshotFormatVersion) {\n const snapshotInfos = [];\n const inputsWithSnapshots = await Promise.all(claimConditionInputs.map(async conditionInput => {\n // check snapshots and upload if provided\n if (conditionInput.snapshot && conditionInput.snapshot.length > 0) {\n const snapshotInfo = await createSnapshot(conditionInput.snapshot, tokenDecimals, provider, storage, snapshotFormatVersion);\n snapshotInfos.push(snapshotInfo);\n conditionInput.merkleRootHash = snapshotInfo.merkleRoot;\n } else {\n // if no snapshot is passed or empty, reset the merkle root\n conditionInput.merkleRootHash = utils.hexZeroPad([0], 32);\n }\n // fill condition with defaults values if not provided\n return conditionInput;\n }));\n return {\n inputsWithSnapshots,\n snapshotInfos\n };\n}\nfunction compare(a, b) {\n const left = BigNumber.from(a);\n const right = BigNumber.from(b);\n if (left.eq(right)) {\n return 0;\n } else if (left.gt(right)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\n * Create and uploads snapshots + converts claim conditions to contract format\n * @param claimConditionInputs\n * @param tokenDecimals\n * @param provider\n * @param storage\n * @param snapshotFormatVersion\n * @internal\n */\nasync function processClaimConditionInputs(claimConditionInputs, tokenDecimals, provider, storage, snapshotFormatVersion) {\n const {\n inputsWithSnapshots,\n snapshotInfos\n } = await processSnapshotData(claimConditionInputs, tokenDecimals, provider, storage, snapshotFormatVersion);\n const parsedInputs = ClaimConditionInputArray.parse(inputsWithSnapshots);\n // Convert processed inputs to the format the contract expects, and sort by timestamp\n const sortedConditions = (await Promise.all(parsedInputs.map(c => convertToContractModel(c, tokenDecimals, provider, storage)))).sort((a, b) => {\n return compare(a.startTimestamp, b.startTimestamp);\n });\n return {\n snapshotInfos,\n sortedConditions\n };\n}\n\n/**\n * Converts a local SDK model to contract model\n * @param c\n * @param tokenDecimals\n * @param provider\n * @param storage\n * @internal\n */\nasync function convertToContractModel(c, tokenDecimals, provider, storage) {\n const currency = c.currencyAddress === constants.AddressZero ? NATIVE_TOKEN_ADDRESS : c.currencyAddress;\n const maxClaimableSupply = convertQuantityToBigNumber(c.maxClaimableSupply, tokenDecimals);\n const maxClaimablePerWallet = convertQuantityToBigNumber(c.maxClaimablePerWallet, tokenDecimals);\n let metadataOrUri;\n if (c.metadata) {\n if (typeof c.metadata === \"string\") {\n metadataOrUri = c.metadata;\n } else {\n metadataOrUri = await storage.upload(c.metadata);\n }\n }\n return {\n startTimestamp: c.startTime,\n maxClaimableSupply,\n supplyClaimed: 0,\n maxClaimablePerWallet,\n pricePerToken: await normalizePriceValue(provider, c.price, currency),\n currency,\n merkleRoot: c.merkleRootHash.toString(),\n waitTimeInSecondsBetweenClaims: c.waitInSeconds || 0,\n metadata: metadataOrUri\n };\n}\nfunction abstractContractModelToLegacy(model) {\n return {\n startTimestamp: model.startTimestamp,\n maxClaimableSupply: model.maxClaimableSupply,\n supplyClaimed: model.supplyClaimed,\n merkleRoot: model.merkleRoot,\n pricePerToken: model.pricePerToken,\n currency: model.currency,\n quantityLimitPerTransaction: model.maxClaimablePerWallet,\n waitTimeInSecondsBetweenClaims: model.waitTimeInSecondsBetweenClaims || 0\n };\n}\nfunction abstractContractModelToNew(model) {\n return {\n startTimestamp: model.startTimestamp,\n maxClaimableSupply: model.maxClaimableSupply,\n supplyClaimed: model.supplyClaimed,\n merkleRoot: model.merkleRoot,\n pricePerToken: model.pricePerToken,\n currency: model.currency,\n quantityLimitPerWallet: model.maxClaimablePerWallet,\n metadata: model.metadata || \"\"\n };\n}\nfunction legacyContractModelToAbstract(model) {\n return {\n startTimestamp: model.startTimestamp,\n maxClaimableSupply: model.maxClaimableSupply,\n supplyClaimed: model.supplyClaimed,\n merkleRoot: model.merkleRoot.toString(),\n pricePerToken: model.pricePerToken,\n currency: model.currency,\n maxClaimablePerWallet: model.quantityLimitPerTransaction,\n waitTimeInSecondsBetweenClaims: model.waitTimeInSecondsBetweenClaims\n };\n}\nfunction newContractModelToAbstract(model) {\n return {\n startTimestamp: model.startTimestamp,\n maxClaimableSupply: model.maxClaimableSupply,\n supplyClaimed: model.supplyClaimed,\n merkleRoot: model.merkleRoot.toString(),\n pricePerToken: model.pricePerToken,\n currency: model.currency,\n maxClaimablePerWallet: model.quantityLimitPerWallet,\n waitTimeInSecondsBetweenClaims: 0,\n metadata: model.metadata\n };\n}\n\n/**\n * Transforms a contract model to local model\n * @param pm\n * @param tokenDecimals\n * @param provider\n * @param merkleMetadata\n * @param storage\n * @param shouldDownloadSnapshot\n * @internal\n */\nasync function transformResultToClaimCondition(pm, tokenDecimals, provider, merkleMetadata, storage, shouldDownloadSnapshot) {\n const cv = await fetchCurrencyValue(provider, pm.currency, pm.pricePerToken);\n const maxClaimableSupply = convertToReadableQuantity(pm.maxClaimableSupply, tokenDecimals);\n const maxClaimablePerWallet = convertToReadableQuantity(pm.maxClaimablePerWallet, tokenDecimals);\n const availableSupply = convertToReadableQuantity(BigNumber.from(pm.maxClaimableSupply).sub(pm.supplyClaimed), tokenDecimals);\n const currentMintSupply = convertToReadableQuantity(pm.supplyClaimed, tokenDecimals);\n let resolvedMetadata;\n if (pm.metadata) {\n resolvedMetadata = await storage.downloadJSON(pm.metadata);\n }\n return ClaimConditionOutputSchema.parse({\n startTime: pm.startTimestamp,\n maxClaimableSupply,\n maxClaimablePerWallet,\n currentMintSupply,\n availableSupply,\n waitInSeconds: pm.waitTimeInSecondsBetweenClaims?.toString(),\n price: BigNumber.from(pm.pricePerToken),\n currency: pm.currency,\n currencyAddress: pm.currency,\n currencyMetadata: cv,\n merkleRootHash: pm.merkleRoot,\n snapshot: shouldDownloadSnapshot ? await fetchSnapshot(pm.merkleRoot, merkleMetadata, storage) : undefined,\n metadata: resolvedMetadata\n });\n}\n\n/**\n * @internal\n * @param bn\n * @param tokenDecimals\n */\nfunction convertToReadableQuantity(bn, tokenDecimals) {\n if (bn.toString() === ethers.constants.MaxUint256.toString()) {\n return \"unlimited\";\n } else {\n return ethers.utils.formatUnits(bn, tokenDecimals);\n }\n}\n\n/**\n * @internal\n * @param quantity\n * @param tokenDecimals\n */\nfunction convertQuantityToBigNumber(quantity, tokenDecimals) {\n if (quantity === \"unlimited\") {\n return ethers.constants.MaxUint256;\n } else {\n return ethers.utils.parseUnits(quantity, tokenDecimals);\n }\n}\nasync function calculateClaimCost(contractWrapper, pricePerToken, quantity, currencyAddress, checkERC20Allowance) {\n let overrides = {};\n const currency = currencyAddress || NATIVE_TOKEN_ADDRESS;\n const normalizedPrice = await normalizePriceValue(contractWrapper.getProvider(), pricePerToken, currency);\n const totalCost = normalizedPrice.mul(quantity);\n if (totalCost.gt(0)) {\n if (currency === NATIVE_TOKEN_ADDRESS) {\n overrides = {\n value: totalCost\n };\n } else if (currency !== NATIVE_TOKEN_ADDRESS && checkERC20Allowance) {\n await approveErc20Allowance(contractWrapper, currency, totalCost, quantity, 0);\n }\n }\n return overrides;\n}\n\n// shard using the first 2 hex character of the address\n// this splits the merkle tree into 256 shards\n// shard files will be 00.json, 01.json, 02.json, ..., ff.json\nconst SHARD_NYBBLES = 2;\nlet SnapshotFormatVersion; // address, maxClaimable, price, currencyAddress\n(function (SnapshotFormatVersion) {\n SnapshotFormatVersion[SnapshotFormatVersion[\"V1\"] = 1] = \"V1\";\n SnapshotFormatVersion[SnapshotFormatVersion[\"V2\"] = 2] = \"V2\";\n})(SnapshotFormatVersion || (SnapshotFormatVersion = {}));\nclass ShardedMerkleTree {\n constructor(storage, baseUri, originalEntriesUri, shardNybbles, tokenDecimals) {\n _defineProperty(this, \"shardNybbles\", void 0);\n _defineProperty(this, \"shards\", void 0);\n _defineProperty(this, \"trees\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"baseUri\", void 0);\n _defineProperty(this, \"originalEntriesUri\", void 0);\n _defineProperty(this, \"tokenDecimals\", void 0);\n this.storage = storage;\n this.shardNybbles = shardNybbles;\n this.baseUri = baseUri;\n this.originalEntriesUri = originalEntriesUri;\n this.tokenDecimals = tokenDecimals;\n this.shards = {};\n this.trees = {};\n }\n static async fromUri(uri, storage) {\n try {\n const shardedMerkleTreeInfo = await storage.downloadJSON(uri);\n if (shardedMerkleTreeInfo.isShardedMerkleTree) {\n return ShardedMerkleTree.fromShardedMerkleTreeInfo(shardedMerkleTreeInfo, storage);\n }\n } catch (e) {\n return undefined;\n }\n }\n static async fromShardedMerkleTreeInfo(info, storage) {\n return new ShardedMerkleTree(storage, info.baseUri, info.originalEntriesUri, info.shardNybbles, info.tokenDecimals);\n }\n static hashEntry(entry, tokenDecimals, currencyDecimals, snapshotFormatVersion) {\n switch (snapshotFormatVersion) {\n case SnapshotFormatVersion.V1:\n return utils.solidityKeccak256([\"address\", \"uint256\"], [entry.address, convertQuantityToBigNumber(entry.maxClaimable, tokenDecimals)]);\n case SnapshotFormatVersion.V2:\n return utils.solidityKeccak256([\"address\", \"uint256\", \"uint256\", \"address\"], [entry.address, convertQuantityToBigNumber(entry.maxClaimable, tokenDecimals), convertQuantityToBigNumber(entry.price || \"unlimited\", currencyDecimals), entry.currencyAddress || ethers.constants.AddressZero]);\n }\n }\n static async fetchAndCacheDecimals(cache, provider, currencyAddress) {\n if (!currencyAddress) {\n return 18;\n }\n // cache decimals for each currency to avoid refetching for every address\n let currencyDecimals = cache[currencyAddress];\n if (currencyDecimals === undefined) {\n const currencyMetadata = await fetchCurrencyMetadata(provider, currencyAddress);\n currencyDecimals = currencyMetadata.decimals;\n cache[currencyAddress] = currencyDecimals;\n }\n return currencyDecimals;\n }\n static async buildAndUpload(snapshotInput, tokenDecimals, provider, storage, snapshotFormatVersion) {\n let shardNybbles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : SHARD_NYBBLES;\n const inputs = SnapshotInputSchema.parse(snapshotInput);\n // TODO Could also derive shardNybbles from input size\n const shards = {};\n for (const snapshotEntry of inputs) {\n const shard = snapshotEntry.address.slice(2, 2 + shardNybbles).toLowerCase();\n if (shards[shard] === undefined) {\n shards[shard] = [];\n }\n shards[shard].push(snapshotEntry);\n }\n const currencyDecimalMap = {};\n // create shard => subtree root map\n const subTrees = await Promise.all(Object.entries(shards).map(async _ref => {\n let [shard, entries] = _ref;\n return [shard, new MerkleTree(await Promise.all(entries.map(async entry => {\n // cache decimals for each currency to avoid refetching for every address\n const currencyDecimals = await ShardedMerkleTree.fetchAndCacheDecimals(currencyDecimalMap, provider, entry.currencyAddress);\n return ShardedMerkleTree.hashEntry(entry, tokenDecimals, currencyDecimals, snapshotFormatVersion);\n })), utils.keccak256, {\n sort: true\n }).getHexRoot()];\n }));\n const roots = Object.fromEntries(subTrees);\n // create master tree from shard => subtree root map\n const tree = new MerkleTree(Object.values(roots), utils.keccak256, {\n sort: true\n });\n const shardsToUpload = [];\n for (const [shardId, entries] of Object.entries(shards)) {\n const data = {\n proofs: tree.getProof(roots[shardId]).map(value => \"0x\" + value.data.toString(\"hex\")),\n entries\n };\n shardsToUpload.push({\n data: JSON.stringify(data),\n name: `${shardId}.json`\n });\n }\n const uris = await storage.uploadBatch(shardsToUpload);\n const baseUri = uris[0].slice(0, uris[0].lastIndexOf(\"/\"));\n const originalEntriesUri = await storage.upload(inputs);\n const shardedMerkleInfo = {\n merkleRoot: tree.getHexRoot(),\n baseUri,\n originalEntriesUri,\n shardNybbles,\n tokenDecimals,\n isShardedMerkleTree: true\n };\n const masterUri = await storage.upload(shardedMerkleInfo);\n return {\n shardedMerkleInfo,\n uri: masterUri\n };\n }\n async getProof(address, provider, snapshotFormatVersion) {\n const shardId = address.slice(2, 2 + this.shardNybbles).toLowerCase();\n let shard = this.shards[shardId];\n const currencyDecimalMap = {};\n if (shard === undefined) {\n try {\n shard = this.shards[shardId] = await this.storage.downloadJSON(`${this.baseUri}/${shardId}.json`);\n const hashedEntries = await Promise.all(shard.entries.map(async entry => {\n // cache decimals for each currency to avoid refetching for every address\n const currencyDecimals = await ShardedMerkleTree.fetchAndCacheDecimals(currencyDecimalMap, provider, entry.currencyAddress);\n return ShardedMerkleTree.hashEntry(entry, this.tokenDecimals, currencyDecimals, snapshotFormatVersion);\n }));\n this.trees[shardId] = new MerkleTree(hashedEntries, utils.keccak256, {\n sort: true\n });\n } catch (e) {\n console.warn(\"No merkle entry found for address\", address);\n return null;\n }\n }\n const entry = shard.entries.find(i => i.address.toLowerCase() === address.toLowerCase());\n if (!entry) {\n return null;\n }\n const currencyDecimals = await ShardedMerkleTree.fetchAndCacheDecimals(currencyDecimalMap, provider, entry.currencyAddress);\n const leaf = ShardedMerkleTree.hashEntry(entry, this.tokenDecimals, currencyDecimals, snapshotFormatVersion);\n const proof = this.trees[shardId].getProof(leaf).map(i => \"0x\" + i.data.toString(\"hex\"));\n return SnapshotEntryWithProofSchema.parse({\n ...entry,\n proof: proof.concat(shard.proofs)\n });\n }\n async getAllEntries() {\n try {\n return await this.storage.downloadJSON(this.originalEntriesUri);\n } catch (e) {\n console.warn(\"Could not fetch original snapshot entries\", e);\n return [];\n }\n }\n}\n\n/**\n * Create a snapshot (merkle tree) from a list of addresses and uploads it to IPFS\n * @param snapshotInput - the list of addresses to hash\n * @param tokenDecimals - the token decimals\n * @param provider\n * @param storage - the storage to upload to\n * @param snapshotFormatVersion\n * @returns the generated snapshot and URI\n * @internal\n */\nasync function createSnapshot(snapshotInput, tokenDecimals, provider, storage, snapshotFormatVersion) {\n const input = SnapshotInputSchema.parse(snapshotInput);\n const addresses = input.map(i => i.address);\n const hasDuplicates = new Set(addresses).size < addresses.length;\n if (hasDuplicates) {\n throw new DuplicateLeafsError();\n }\n const tree = await ShardedMerkleTree.buildAndUpload(input, tokenDecimals, provider, storage, snapshotFormatVersion);\n return {\n merkleRoot: tree.shardedMerkleInfo.merkleRoot,\n snapshotUri: tree.uri\n };\n}\n\n/**\n *\n * @internal\n */\nconst roleMap = {\n admin: \"\",\n transfer: \"TRANSFER_ROLE\",\n minter: \"MINTER_ROLE\",\n pauser: \"PAUSER_ROLE\",\n lister: \"LISTER_ROLE\",\n asset: \"ASSET_ROLE\",\n unwrap: \"UNWRAP_ROLE\",\n factory: \"FACTORY_ROLE\"\n};\n\n/**\n * @public\n */\n\n/**\n * @public\n */\nconst ALL_ROLES = Object.keys(roleMap);\n\n/**\n * @internal\n */\nfunction getRoleHash(role) {\n if (role === \"admin\") {\n return ethers.utils.hexZeroPad([0], 32);\n }\n return ethers.utils.id(roleMap[role]);\n}\n\n/**\n * Encodes and decodes Contract functions\n * @public\n */\nclass ContractEncoder {\n constructor(contractWrapper) {\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Encodes the given contract function with argument\n * @returns the encoded data\n */\n encode(fn, args) {\n return this.contractWrapper.readContract.interface.encodeFunctionData(fn, args);\n }\n\n /**\n * Decode encoded call data for a given function\n * @param fn - the function to decode\n * @param encodedArgs - the encoded arguments\n */\n decode(fn, encodedArgs) {\n return this.contractWrapper.readContract.interface.decodeFunctionData(fn, encodedArgs);\n }\n}\n\nconst FEATURE_ROYALTY = {\n name: \"Royalty\",\n namespace: \"royalty\",\n docLinks: {\n sdk: \"sdk.contractroyalty\",\n contracts: \"Royalty\"\n },\n abis: [IThirdwebRoyaltyAbi],\n features: {}\n};\nconst FEATURE_PRIMARY_SALE = {\n name: \"PrimarySale\",\n namespace: \"sales\",\n docLinks: {\n sdk: \"sdk.contractprimarysale\",\n contracts: \"PrimarySale\"\n },\n abis: [IThirdwebPrimarySaleAbi],\n features: {}\n};\nconst FEATURE_PLATFORM_FEE = {\n name: \"PlatformFee\",\n namespace: \"platformFee\",\n docLinks: {\n sdk: \"sdk.platformfee\",\n contracts: \"PlatformFee\"\n },\n abis: [IThirdwebPlatformFeeAbi],\n features: {}\n};\nconst FEATURE_PERMISSIONS_ENUMERABLE = {\n name: \"PermissionsEnumerable\",\n namespace: \"roles\",\n docLinks: {\n sdk: \"sdk.contractroles\",\n contracts: \"PermissionsEnumerable\"\n },\n abis: [IPermissionsEnumerableAbi],\n features: {}\n};\nconst FEATURE_PERMISSIONS = {\n name: \"Permissions\",\n namespace: \"roles\",\n docLinks: {\n sdk: \"sdk.contractroles\",\n contracts: \"Permissions\"\n },\n abis: [IPermissionsAbi],\n features: {\n [FEATURE_PERMISSIONS_ENUMERABLE.name]: FEATURE_PERMISSIONS_ENUMERABLE\n }\n};\nconst FEATURE_METADATA = {\n name: \"ContractMetadata\",\n namespace: \"metadata\",\n docLinks: {\n sdk: \"sdk.contractmetadata\",\n contracts: \"ContractMetadata\"\n },\n abis: [IContractMetadataAbi],\n features: {}\n};\nconst FEATURE_APPURI = {\n name: \"AppURI\",\n namespace: \"appURI\",\n docLinks: {\n sdk: \"sdk.appURI\",\n contracts: \"AppURI\"\n },\n abis: [IAppURI],\n features: {}\n};\nconst FEATURE_OWNER = {\n name: \"Ownable\",\n namespace: \"owner\",\n docLinks: {\n sdk: \"sdk.owner\",\n contracts: \"Ownable\"\n },\n abis: [IOwnableAbi],\n features: {}\n};\nconst FEATURE_GASLESS = {\n name: \"Gasless\",\n namespace: \"gasless\",\n docLinks: {\n sdk: \"sdk.gaslesstransaction\",\n // TODO add the correct name for this once it's added to portal\n contracts: \"\"\n },\n abis: [IERC2771ContextAbi],\n features: {}\n};\nconst FEATURE_PACK_VRF = {\n name: \"PackVRF\",\n namespace: \"pack.vrf\",\n docLinks: {\n sdk: \"sdk.packvrf\",\n contracts: \"IPackVRFDirect\"\n },\n abis: [IPackVRFAbi],\n features: {}\n};\nconst FEATURE_PLUGIN_ROUTER = {\n name: \"PluginRouter\",\n namespace: \"plugin.router\",\n docLinks: {\n sdk: \"sdk.pluginrouter\",\n contracts: \"IRouter\"\n },\n abis: [IRouterAbi],\n features: {}\n};\nconst FEATURE_DIRECT_LISTINGS = {\n name: \"DirectListings\",\n namespace: \"direct.listings\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"\"\n },\n abis: [IDirectListingsAbi],\n features: {}\n};\nconst FEATURE_ENGLISH_AUCTIONS = {\n name: \"EnglishAuctions\",\n namespace: \"english.auctions\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"\"\n },\n abis: [IEnglishAuctionsAbi],\n features: {}\n};\nconst FEATURE_OFFERS = {\n name: \"Offers\",\n namespace: \"offers\",\n docLinks: {\n // TODO\n sdk: \"\",\n contracts: \"\"\n },\n abis: [IOffersAbi],\n features: {}\n};\n\n/**\n * Handles metadata for a Contract\n * @remarks Read and update metadata for this contract\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const metadata = await contract.metadata.get();\n * await contract.metadata.set({\n * name: \"My Contract\",\n * description: \"My contract description\"\n * })\n * ```\n * @public\n */\nclass ContractMetadata {\n constructor(contractWrapper, schema, storage) {\n _defineProperty(this, \"featureName\", FEATURE_METADATA.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"schema\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.contractWrapper = contractWrapper;\n this.schema = schema;\n this.storage = storage;\n }\n /**\n * @internal\n */\n parseOutputMetadata(metadata) {\n return this.schema.output.parse(metadata);\n }\n\n /**\n * @internal\n */\n parseInputMetadata(metadata) {\n return this.schema.input.parse(metadata);\n }\n /**\n * Get the metadata of a contract\n * @remarks Get the metadata of a contract\n * @example\n * ```javascript\n * const metadata = await contract.metadata.get();\n * ```\n * @public\n * @returns the metadata of the given contract\n * @twfeature ContractMetadata\n */\n async get() {\n let data;\n if (this.supportsContractMetadata(this.contractWrapper)) {\n const uri = await this.contractWrapper.readContract.contractURI();\n if (uri && uri.includes(\"://\")) {\n data = await this.storage.downloadJSON(uri);\n }\n }\n if (!data) {\n try {\n // try fetching metadata from bytecode and / or contract itself\n let contractName;\n try {\n if (hasFunction(\"name\", this.contractWrapper)) {\n contractName = await this.contractWrapper.readContract.name();\n }\n } catch (err) {\n // no-op\n }\n const publishedMetadata = await fetchContractMetadataFromAddress(this.contractWrapper.readContract.address, this.contractWrapper.getProvider(), this.storage);\n data = {\n name: contractName || publishedMetadata.name,\n description: publishedMetadata.info.title\n };\n } catch (e) {\n throw new Error(\"Could not fetch contract metadata\");\n }\n }\n return this.parseOutputMetadata(data);\n }\n /**\n * Set the metadata of a contract\n * @remarks OVERWRITE the metadata of a contract\n * @example\n * ```javascript\n * await contract.metadata.set({\n * name: \"My Contract\",\n * description: \"My contract description\"\n * })\n * ```\n * @public\n * @param metadata - the metadata to set\n * @twfeature ContractMetadata\n */\n async set(metadata) {\n const uri = await this._parseAndUploadMetadata(metadata);\n const wrapper = this.contractWrapper;\n if (this.supportsContractMetadata(wrapper)) {\n const receipt = await wrapper.sendTransaction(\"setContractURI\", [uri]);\n return {\n receipt,\n data: this.get\n };\n } else {\n throw new ExtensionNotImplementedError(FEATURE_METADATA);\n }\n }\n\n /**\n * Update the metadata of a contract\n * @remarks Update the metadata of a contract\n * @example\n * ```javascript\n * await contract.metadata.update({\n * name: \"My Contract\",\n * description: \"My contract description\"\n * })\n * ```\n * @public\n * @param metadata - the metadata to update\n * @twfeature ContractMetadata\n * */\n async update(metadata) {\n return await this.set({\n ...(await this.get()),\n ...metadata\n });\n }\n\n /**\n *\n * @internal\n * @param metadata - the metadata to set\n * @returns\n */\n async _parseAndUploadMetadata(metadata) {\n const parsedMetadata = this.parseInputMetadata(metadata);\n return this.storage.upload(parsedMetadata);\n }\n supportsContractMetadata(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ContractMetadata\");\n }\n}\n\n/**\n * Handle contract permissions\n * @remarks Configure roles and permissions for a contract, to restrict certain actions.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const rolesAndMembers = await contract.roles.getAll();\n * await contract.roles.grantRole(\"admin\", \"0x...\");\n * ```\n * @public\n */\nclass ContractRoles {\n /**\n * @internal\n * @remarks This is used for typing inside react hooks which is why it has to be public.\n */\n\n constructor(contractWrapper, roles) {\n _defineProperty(this, \"featureName\", FEATURE_PERMISSIONS.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"roles\", void 0);\n this.contractWrapper = contractWrapper;\n this.roles = roles;\n }\n\n /** **************************\n * READ FUNCTIONS\n ****************************/\n\n /**\n * Call this to get get a list of addresses for all supported roles on the contract.\n * @remarks See {@link ContractRoles.get} to get a list of addresses that are members of a specific role.\n * @example\n * ```javascript\n * const rolesAndMembers = await contract.roles.getAll();\n * ```\n * @returns A record of {@link Role}s to lists of addresses that are members of the given role.\n * @throws If the contract does not support roles this will throw an error.\n *\n * @public\n * @twfeature Permissions\n */\n async getAll() {\n invariant(this.roles.length, \"this contract has no support for roles\");\n const roles = {};\n for (const role of this.roles) {\n roles[role] = await this.get(role);\n }\n return roles;\n }\n\n /**\n * Call this to get a list of addresses that are members of a specific role.\n * @remarks See {@link ContractRoles.getAll} to get get a list of addresses for all supported roles on the contract.\n * @param role - The Role to to get a memberlist for.\n * @returns The list of addresses that are members of the specific role.\n * @throws If you are requestiong a role that does not exist on the contract this will throw an error.\n *\n * @example Say you want to get the list of addresses that are members of the minter role.\n * ```javascript\n * const minterAddresses = await contract.roles.get(\"minter\");\n * ```\n *\n * @public\n * @twfeature Permissions\n */\n async get(role) {\n invariant(this.roles.includes(role), `this contract does not support the \"${role}\" role`);\n const wrapper = this.contractWrapper;\n if (hasFunction(\"getRoleMemberCount\", wrapper) && hasFunction(\"getRoleMember\", wrapper)) {\n const roleHash = getRoleHash(role);\n const count = (await wrapper.readContract.getRoleMemberCount(roleHash)).toNumber();\n return await Promise.all(Array.from(Array(count).keys()).map(i => wrapper.readContract.getRoleMember(roleHash, i)));\n }\n throw new Error(\"Contract does not support enumerating roles. Please implement IPermissionsEnumerable to unlock this functionality.\");\n }\n\n /**\n * Call this to OVERWRITE the list of addresses that are members of specific roles.\n *\n * Every role in the list will be overwritten with the new list of addresses provided with them.\n * If you want to add or remove addresses for a single address use {@link ContractRoles.grant} and {@link ContractRoles.revoke} respectively instead.\n * @param rolesWithAddresses - A record of {@link Role}s to lists of addresses that should be members of the given role.\n * @throws If you are requestiong a role that does not exist on the contract this will throw an error.\n * @example Say you want to overwrite the list of addresses that are members of the minter role.\n * ```javascript\n * const minterAddresses = await contract.roles.get(\"minter\");\n * await contract.roles.setAll({\n * minter: []\n * });\n * console.log(await contract.roles.get(\"minter\")); // No matter what members had the role before, the new list will be set to []\n * ```\n * @public\n * @twfeature Permissions\n *\n * */\n async setAll(rolesWithAddresses) {\n const roles = Object.keys(rolesWithAddresses);\n invariant(roles.length, \"you must provide at least one role to set\");\n invariant(roles.every(role => this.roles.includes(role)), \"this contract does not support the given role\");\n const currentRoles = await this.getAll();\n const encoded = [];\n // add / remove admin role at the end so we don't revoke admin then grant\n const sortedRoles = roles.sort(role => role === \"admin\" ? 1 : -1);\n for (let i = 0; i < sortedRoles.length; i++) {\n const role = sortedRoles[i];\n const addresses = rolesWithAddresses[role] || [];\n const currentAddresses = currentRoles[role] || [];\n const toAdd = addresses.filter(address => !currentAddresses.includes(address));\n const toRemove = currentAddresses.filter(address => !addresses.includes(address));\n if (toAdd.length) {\n toAdd.forEach(address => {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"grantRole\", [getRoleHash(role), address]));\n });\n }\n if (toRemove.length) {\n for (let j = 0; j < toRemove.length; j++) {\n const address = toRemove[j];\n const revokeFunctionName = await this.getRevokeRoleFunctionName(address);\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(revokeFunctionName, [getRoleHash(role), address]));\n }\n }\n }\n return {\n receipt: await this.contractWrapper.multiCall(encoded)\n };\n }\n\n /**\n * Throws an error if an address is missing the roles specified.\n *\n * @param roles - The roles to check\n * @param address - The address to check\n *\n * @internal\n */\n async verify(roles, address) {\n await Promise.all(roles.map(async role => {\n const members = await this.get(role);\n if (!members.map(a => a.toLowerCase()).includes(address.toLowerCase())) {\n throw new MissingRoleError(address, role);\n }\n }));\n }\n\n /** **************************\n * WRITE FUNCTIONS\n ****************************/\n\n /**\n * Call this to grant a role to a specific address.\n *\n * @remarks Make sure you are sure you want to grant the role to the address.\n *\n * @example\n * ```javascript\n * await contract.roles.grant(\"minter\", \"0x1234567890123456789012345678901234567890\");\n * ```\n *\n * @param role - The {@link Role} to grant to the address\n * @param address - The address to grant the role to\n * @returns The transaction receipt\n * @throws If you are trying to grant does not exist on the contract this will throw an error.\n *\n * @public\n * @twfeature Permissions\n */\n async grant(role, address) {\n invariant(this.roles.includes(role), `this contract does not support the \"${role}\" role`);\n return {\n receipt: await this.contractWrapper.sendTransaction(\"grantRole\", [getRoleHash(role), address])\n };\n }\n\n /**\n * Call this to revoke a role from a specific address.\n *\n * @remarks\n *\n * -- Caution --\n *\n * This will let you remove yourself from the role, too.\n * If you remove yourself from the admin role, you will no longer be able to administer the contract.\n * There is no way to recover from this.\n *\n * @example\n * ```javascript\n * await contract.roles.revoke(\"minter\", \"0x1234567890123456789012345678901234567890\");\n * ```\n *\n * @param role - The {@link Role} to revoke\n * @param address - The address to revoke the role from\n * @returns The transaction receipt\n * @throws If you are trying to revoke does not exist on the module this will throw an error.\n *\n * @public\n * @twfeature Permissions\n */\n async revoke(role, address) {\n invariant(this.roles.includes(role), `this contract does not support the \"${role}\" role`);\n const revokeFunctionName = await this.getRevokeRoleFunctionName(address);\n return {\n receipt: await this.contractWrapper.sendTransaction(revokeFunctionName, [getRoleHash(role), address])\n };\n }\n\n /** **************************\n * PRIVATE FUNCTIONS\n ****************************/\n\n async getRevokeRoleFunctionName(address) {\n const signerAddress = await this.contractWrapper.getSignerAddress();\n if (signerAddress.toLowerCase() === address.toLowerCase()) {\n return \"renounceRole\";\n }\n return \"revokeRole\";\n }\n}\n\n/**\n * Handle contract royalties\n * @remarks Configure royalties for an entire contract or a particular token.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const royaltyInfo = await contract.royalties.getDefaultRoyaltyInfo();\n * await contract.roles.setTokenRoyaltyInfo(tokenId, {\n * seller_fee_basis_points: 100, // 1% royalty fee\n * fee_recipient: \"0x...\", // the fee recipient\n * });\n * ```\n * @public\n */\nclass ContractRoyalty {\n constructor(contractWrapper, metadata) {\n _defineProperty(this, \"featureName\", FEATURE_ROYALTY.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"metadata\", void 0);\n this.contractWrapper = contractWrapper;\n this.metadata = metadata;\n }\n\n /**\n * Gets the royalty recipient and BPS (basis points) of the contract\n * @returns - The royalty recipient and BPS\n * @example\n * ```javascript\n * const royaltyInfo = await contract.royalties.getDefaultRoyaltyInfo();\n * ```\n * @public\n * @twfeature Royalty\n */\n async getDefaultRoyaltyInfo() {\n const [royaltyRecipient, royaltyBps] = await this.contractWrapper.readContract.getDefaultRoyaltyInfo();\n // parse it on the way out to make sure we default things if they are not set\n return CommonRoyaltySchema.parse({\n fee_recipient: royaltyRecipient,\n seller_fee_basis_points: royaltyBps\n });\n }\n\n /**\n * Gets the royalty recipient and BPS (basis points) of a particular token\n * @returns - The royalty recipient and BPS\n * @example\n * ```javascript\n * const royaltyInfo = await contract.royalties.getDefaultRoyaltyInfo();\n * ```\n * @public\n * @twfeature Royalty\n */\n async getTokenRoyaltyInfo(tokenId) {\n const [royaltyRecipient, royaltyBps] = await this.contractWrapper.readContract.getRoyaltyInfoForToken(tokenId);\n return CommonRoyaltySchema.parse({\n fee_recipient: royaltyRecipient,\n seller_fee_basis_points: royaltyBps\n });\n }\n\n /**\n * Set the royalty recipient and fee for a contract\n * @param royaltyData - the royalty recipient and fee\n * @example\n * ```javascript\n * await contract.roles.setDefaultRoyaltyInfo({\n * seller_fee_basis_points: 100, // 1% royalty fee\n * fee_recipient: \"0x...\", // the fee recipient\n * });\n * ```\n * @public\n * @twfeature Royalty\n */\n async setDefaultRoyaltyInfo(royaltyData) {\n // read the metadata from the contract\n const oldMetadata = await this.metadata.get();\n\n // update the metadata with the new royalty data\n // if one of the keys is \"undefined\" it will be ignored (which is the desired behavior)\n const mergedMetadata = this.metadata.parseInputMetadata({\n ...oldMetadata,\n ...royaltyData\n });\n\n // why not use this.metadata.set()? - because that would end up sending it's own separate transaction to `setContractURI`\n // but we want to send both the `setRoyaltyInfo` and `setContractURI` in one transaction!\n const contractURI = await this.metadata._parseAndUploadMetadata(mergedMetadata);\n if (hasFunction(\"setContractURI\", this.contractWrapper)) {\n // encode both the functions we want to send\n const encoded = [this.contractWrapper.readContract.interface.encodeFunctionData(\"setDefaultRoyaltyInfo\", [mergedMetadata.fee_recipient, mergedMetadata.seller_fee_basis_points]), this.contractWrapper.readContract.interface.encodeFunctionData(\"setContractURI\", [contractURI])];\n // actually send the transaction and return the receipt + a way to get the new royalty info\n return {\n receipt: await this.contractWrapper.multiCall(encoded),\n data: () => this.getDefaultRoyaltyInfo()\n };\n } else {\n throw new Error(\"Updating royalties requires implementing ContractMetadata in your contract to support marketplaces like OpenSea.\");\n }\n }\n\n /**\n * Set the royalty recipient and fee for a particular token\n * @param tokenId - the token id\n * @param royaltyData - the royalty recipient and fee\n * @example\n * ```javascript\n * await contract.roles.setTokenRoyaltyInfo(tokenId, {\n * seller_fee_basis_points: 100, // 1% royalty fee\n * fee_recipient: \"0x...\", // the fee recipient\n * });\n * ```\n * @public\n * @twfeature Royalty\n */\n async setTokenRoyaltyInfo(tokenId, royaltyData) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setRoyaltyInfoForToken\", [tokenId, royaltyData.fee_recipient, royaltyData.seller_fee_basis_points]),\n data: () => this.getDefaultRoyaltyInfo()\n };\n }\n}\n\n/**\n * Handle primary sales recipients\n * @remarks Configure primary sale recipients for an entire contract.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const salesRecipient = await contract.sales.getRecipient();\n * await contract.sales.setRecipient(recipientWalletAddress);\n * ```\n * @public\n */\nclass ContractPrimarySale {\n constructor(contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_PRIMARY_SALE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Get the primary sale recipient.\n * @returns the wallet address.\n * @example\n * ```javascript\n * const salesRecipient = await contract.sales.getRecipient();\n * ```\n * @public\n * @twfeature PrimarySale\n */\n async getRecipient() {\n return await this.contractWrapper.readContract.primarySaleRecipient();\n }\n\n /**\n * Set the primary sale recipient\n * @param recipient - the wallet address\n * @example\n * ```javascript\n * await contract.sales.setRecipient(recipientWalletAddress);\n * ```\n * @public\n * @twfeature PrimarySale\n */\n async setRecipient(recipient) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setPrimarySaleRecipient\", [recipient])\n };\n }\n}\n\nconst FALLBACK_METADATA = {\n name: \"Failed to load NFT metadata\"\n};\n\n/**\n * fetches the token metadata\n * @param tokenId - the id (to get it back in the output)\n * @param tokenUri - the uri to fetch\n * @param storage - which storage to fetch from\n *\n * @internal\n */\nasync function fetchTokenMetadata(tokenId, tokenUri, storage) {\n const parsedUri = tokenUri.replace(\"{id}\", ethers.utils.hexZeroPad(BigNumber.from(tokenId).toHexString(), 32).slice(2));\n let jsonMetadata;\n try {\n jsonMetadata = await storage.downloadJSON(parsedUri);\n } catch (err) {\n const unparsedTokenIdUri = tokenUri.replace(\"{id}\", BigNumber.from(tokenId).toString());\n try {\n jsonMetadata = await storage.downloadJSON(unparsedTokenIdUri);\n } catch (e) {\n console.warn(`failed to get token metadata: ${JSON.stringify({\n tokenId: tokenId.toString(),\n tokenUri\n })} -- falling back to default metadata`);\n jsonMetadata = FALLBACK_METADATA;\n }\n }\n return CommonNFTOutput.parse({\n ...jsonMetadata,\n id: BigNumber.from(tokenId).toString(),\n uri: tokenUri\n });\n}\n\n// Used for marketplace to fetch NFT metadata from contract address + tokenId\n/**\n * @internal\n * @param contractAddress\n * @param provider\n * @param tokenId\n * @param storage\n */\nasync function fetchTokenMetadataForContract(contractAddress, provider, tokenId, storage) {\n let uri;\n const erc165 = new Contract(contractAddress, ERC165Abi, provider);\n const isERC721 = await erc165.supportsInterface(InterfaceId_IERC721);\n const isERC1155 = await erc165.supportsInterface(InterfaceId_IERC1155);\n if (isERC721) {\n const erc721 = new Contract(contractAddress, ERC721MetadataAbi, provider);\n uri = await erc721.tokenURI(tokenId);\n } else if (isERC1155) {\n const erc1155 = new Contract(contractAddress, ERC1155MetadataAbi, provider);\n uri = await erc1155.uri(tokenId);\n } else {\n throw Error(\"Contract must implement ERC 1155 or ERC 721.\");\n }\n if (!uri) {\n throw new NotFoundError();\n }\n return fetchTokenMetadata(tokenId, uri, storage);\n}\n\n/**\n * @internal\n * @param metadata\n * @param storage\n */\nasync function uploadOrExtractURI(metadata, storage) {\n if (typeof metadata === \"string\") {\n return metadata;\n } else {\n return await storage.upload(CommonNFTInput.parse(metadata));\n }\n}\n\n/**\n * @internal\n * @param metadatas\n * @param storage\n * @param startNumber\n * @param contractAddress\n * @param signerAddress\n * @param options\n */\nasync function uploadOrExtractURIs(metadatas, storage, startNumber, options) {\n if (isUriList(metadatas)) {\n return metadatas;\n } else if (isMetadataList(metadatas)) {\n const uris = await storage.uploadBatch(metadatas.map(m => CommonNFTInput.parse(m)), {\n rewriteFileNames: {\n fileStartNumber: startNumber || 0\n },\n onProgress: options?.onProgress\n });\n return uris;\n } else {\n throw new Error(\"NFT metadatas must all be of the same type (all URI or all NFTMetadataInput)\");\n }\n}\nfunction getBaseUriFromBatch(uris) {\n const baseUri = uris[0].substring(0, uris[0].lastIndexOf(\"/\"));\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i].substring(0, uris[i].lastIndexOf(\"/\"));\n if (baseUri !== uri) {\n throw new Error(`Can only create batches with the same base URI for every entry in the batch. Expected '${baseUri}' but got '${uri}'`);\n }\n }\n\n // Ensure that baseUri ends with trailing slash\n return baseUri.replace(/\\/$/, \"\") + \"/\";\n}\nfunction isUriList(metadatas) {\n return metadatas.find(m => typeof m !== \"string\") === undefined;\n}\nfunction isMetadataList(metadatas) {\n return metadatas.find(m => typeof m !== \"object\") === undefined;\n}\n\n/**\n * Handles delayed reveal logic\n * @public\n */\nclass DelayedReveal {\n constructor(contractWrapper, storage, fetureName, nextTokenIdToMintFn) {\n _defineProperty(this, \"featureName\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"nextTokenIdToMintFn\", void 0);\n this.featureName = fetureName;\n this.nextTokenIdToMintFn = nextTokenIdToMintFn;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n\n /**\n * Create a batch of encrypted NFTs that can be revealed at a later time.\n * @remarks Create a batch of encrypted NFTs that can be revealed at a later time.\n * @example\n * ```javascript\n * // the real NFTs, these will be encrypted until your reveal them!\n * const realNFTs = [{\n * name: \"Common NFT #1\",\n * description: \"Common NFT, one of many.\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }, {\n * name: \"Super Rare NFT #2\",\n * description: \"You got a Super Rare NFT!\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n * // A placeholder NFT that people will get immediately in their wallet, until the reveal happens!\n * const placeholderNFT = {\n * name: \"Hidden NFT\",\n * description: \"Will be revealed next week!\"\n * };\n * // Create and encrypt the NFTs\n * await contract.revealer.createDelayedRevealBatch(\n * placeholderNFT,\n * realNFTs,\n * \"my secret password\",\n * );\n * ```\n * @public\n * @param placeholder - the placeholder NFT to show before the reveal\n * @param metadatas - the final NFTs that will be hidden\n * @param password - the password that will be used to reveal these NFTs\n * @param options - additional options like upload progress\n */\n async createDelayedRevealBatch(placeholder, metadatas, password, options) {\n if (!password) {\n throw new Error(\"Password is required\");\n }\n const placeholderUris = await this.storage.uploadBatch([CommonNFTInput.parse(placeholder)], {\n rewriteFileNames: {\n fileStartNumber: 0\n }\n });\n const placeholderUri = getBaseUriFromBatch(placeholderUris);\n const startFileNumber = await this.nextTokenIdToMintFn();\n const uris = await this.storage.uploadBatch(metadatas.map(m => CommonNFTInput.parse(m)), {\n onProgress: options?.onProgress,\n rewriteFileNames: {\n fileStartNumber: startFileNumber.toNumber()\n }\n });\n const baseUri = getBaseUriFromBatch(uris);\n const baseUriId = await this.contractWrapper.readContract.getBaseURICount();\n const hashedPassword = await this.hashDelayRevealPasword(baseUriId, password);\n const encryptedBaseUri = await this.contractWrapper.readContract.encryptDecrypt(ethers.utils.toUtf8Bytes(baseUri), hashedPassword);\n let data;\n const legacyContract = await this.isLegacyContract();\n if (legacyContract) {\n data = encryptedBaseUri;\n } else {\n const chainId = await this.contractWrapper.getChainID();\n const provenanceHash = ethers.utils.solidityKeccak256([\"bytes\", \"bytes\", \"uint256\"], [ethers.utils.toUtf8Bytes(baseUri), hashedPassword, chainId]);\n data = ethers.utils.defaultAbiCoder.encode([\"bytes\", \"bytes32\"], [encryptedBaseUri, provenanceHash]);\n }\n const receipt = await this.contractWrapper.sendTransaction(\"lazyMint\", [uris.length, placeholderUri.endsWith(\"/\") ? placeholderUri : `${placeholderUri}/`, data]);\n const events = this.contractWrapper.parseLogs(\"TokensLazyMinted\", receipt?.logs);\n const startingIndex = events[0].args.startTokenId;\n const endingIndex = events[0].args.endTokenId;\n const results = [];\n for (let id = startingIndex; id.lte(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt\n });\n }\n return results;\n }\n\n /**\n * Reveal a batch of hidden NFTs\n * @remarks Reveal the NFTs of a batch using the password.\n * @example\n * ```javascript\n * // the batch to reveal\n * const batchId = 0;\n * // reveal the batch\n * await contract.revealer.reveal(batchId, \"my secret password\");\n * ```\n * @public\n * @param batchId - the id of the batch to reveal\n * @param password - the password\n */\n async reveal(batchId, password) {\n if (!password) {\n throw new Error(\"Password is required\");\n }\n const key = await this.hashDelayRevealPasword(batchId, password);\n // performing the reveal locally to make sure it'd succeed before sending the transaction\n try {\n const decryptedUri = await this.contractWrapper.callStatic().reveal(batchId, key);\n // basic sanity check for making sure decryptedUri is valid\n // this is optional because invalid decryption key would result in non-utf8 bytes and\n // ethers would throw when trying to decode it\n if (!decryptedUri.includes(\"://\") || !decryptedUri.endsWith(\"/\")) {\n throw new Error(\"invalid password\");\n }\n } catch (e) {\n throw new Error(\"invalid password\");\n }\n return {\n receipt: await this.contractWrapper.sendTransaction(\"reveal\", [batchId, key])\n };\n }\n\n /**\n * Gets the list of unrevealed NFT batches.\n * @remarks Gets the list of unrevealed NFT batches.\n * @example\n * ```javascript\n * const batches = await contract.revealer.getBatchesToReveal();\n * ```\n * @public\n */\n async getBatchesToReveal() {\n const count = await this.contractWrapper.readContract.getBaseURICount();\n if (count.isZero()) {\n return [];\n }\n const countRangeArray = Array.from(Array(count.toNumber()).keys());\n // map over to get the base uri indices, which should be the end token id of every batch\n const uriIndices = await Promise.all(countRangeArray.map(i => {\n if (hasFunction(\"getBatchIdAtIndex\", this.contractWrapper)) {\n return this.contractWrapper.readContract.getBatchIdAtIndex(i);\n }\n if (hasFunction(\"baseURIIndices\", this.contractWrapper)) {\n return this.contractWrapper.readContract.baseURIIndices(i);\n }\n throw new Error(\"Contract does not have getBatchIdAtIndex or baseURIIndices.\");\n }));\n\n // first batch always start from 0. don't need to fetch the last batch so pop it from the range array\n const uriIndicesWithZeroStart = uriIndices.slice(0, uriIndices.length - 1);\n\n // returns the token uri for each batches. first batch always starts from token id 0.\n const tokenMetadatas = await Promise.all(Array.from([0, ...uriIndicesWithZeroStart]).map(i => this.getNftMetadata(i.toString())));\n\n // index is the uri indices, which is end token id. different from uris\n const legacyContract = await this.isLegacyContract();\n const encryptedUriData = await Promise.all(Array.from([...uriIndices]).map(i => legacyContract ? this.getLegacyEncryptedData(i) : this.contractWrapper.readContract.encryptedData(i)));\n const encryptedBaseUris = encryptedUriData.map(data => {\n if (ethers.utils.hexDataLength(data) > 0) {\n if (legacyContract) {\n return data;\n }\n const result = ethers.utils.defaultAbiCoder.decode([\"bytes\", \"bytes32\"], data);\n return result[0];\n } else {\n return data;\n }\n });\n return tokenMetadatas.map((meta, index) => ({\n batchId: BigNumber.from(index),\n batchUri: meta.uri,\n placeholderMetadata: meta\n })).filter((_, index) => ethers.utils.hexDataLength(encryptedBaseUris[index]) > 0);\n }\n\n /**\n * Algorithm to hash delay reveal password, so we don't broadcast the input password on-chain.\n *\n * @internal\n */\n async hashDelayRevealPasword(batchTokenIndex, password) {\n const chainId = await this.contractWrapper.getChainID();\n const contractAddress = this.contractWrapper.readContract.address;\n return ethers.utils.solidityKeccak256([\"string\", \"uint256\", \"uint256\", \"address\"], [password, chainId, batchTokenIndex, contractAddress]);\n }\n async getNftMetadata(tokenId) {\n return fetchTokenMetadataForContract(this.contractWrapper.readContract.address, this.contractWrapper.getProvider(), tokenId, this.storage);\n }\n async isLegacyContract() {\n if (hasFunction(\"contractVersion\", this.contractWrapper)) {\n try {\n const version = await this.contractWrapper.readContract.contractVersion();\n return version <= 2;\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n async getLegacyEncryptedData(index) {\n const legacy = new ethers.Contract(this.contractWrapper.readContract.address, DeprecatedAbi, this.contractWrapper.getProvider());\n const result = await legacy.functions[\"encryptedBaseURI\"](index);\n if (result.length > 0) {\n return result[0];\n } else {\n return \"0x\";\n }\n }\n}\n\nconst FEATURE_TOKEN_CLAIM_CONDITIONS_V1 = {\n name: \"ERC20ClaimConditionsV1\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"DropSinglePhase_V1\"\n },\n abis: [ERC20Abi, IDropSinglePhaseV1],\n features: {}\n};\nconst FEATURE_TOKEN_CLAIM_CONDITIONS_V2 = {\n name: \"ERC20ClaimConditionsV2\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"DropSinglePhase\"\n },\n abis: [ERC20Abi, IDropSinglePhase],\n features: {}\n};\nconst FEATURE_TOKEN_CLAIM_PHASES_V2 = {\n name: \"ERC20ClaimPhasesV2\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"Drop\"\n },\n abis: [ERC20Abi, IDrop],\n features: {}\n};\nconst FEATURE_TOKEN_CLAIM_PHASES_V1 = {\n name: \"ERC20ClaimPhasesV1\",\n namespace: \"token.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc20dclaimable\",\n contracts: \"Drop\"\n },\n abis: [DropERC20_V2Abi],\n features: {}\n};\nconst FEATURE_TOKEN_BURNABLE = {\n name: \"ERC20Burnable\",\n namespace: \"token.burn\",\n docLinks: {\n sdk: \"sdk.erc20burnable\",\n contracts: \"IBurnableERC20\"\n },\n abis: [ERC20Abi, IBurnableERC20Abi],\n features: {}\n};\nconst FEATURE_TOKEN_SIGNATURE_MINTABLE = {\n name: \"ERC20SignatureMintable\",\n namespace: \"token.signature\",\n docLinks: {\n sdk: \"sdk.erc20signaturemintable\",\n contracts: \"ISignatureMintERC20\"\n },\n abis: [ERC20Abi, ISignatureMintERC20Abi],\n features: {}\n};\nconst FEATURE_TOKEN_BATCH_MINTABLE = {\n name: \"ERC20BatchMintable\",\n namespace: \"token.mint.batch\",\n docLinks: {\n sdk: \"sdk.erc20batchmintable\",\n contracts: \"IMulticall\"\n },\n abis: [ERC20Abi, IMintableERC20Abi, MulticallAbi],\n features: {}\n};\nconst FEATURE_TOKEN_MINTABLE = {\n name: \"ERC20Mintable\",\n namespace: \"token.mint\",\n docLinks: {\n sdk: \"sdk.erc20mintable\",\n contracts: \"IMintableERC20\"\n },\n abis: [ERC20Abi, IMintableERC20Abi],\n features: {\n [FEATURE_TOKEN_BATCH_MINTABLE.name]: FEATURE_TOKEN_BATCH_MINTABLE\n }\n};\nconst FEATURE_TOKEN = {\n name: \"ERC20\",\n namespace: \"token\",\n docLinks: {\n sdk: \"sdk.erc20\",\n contracts: \"IERC20\"\n },\n abis: [ERC20Abi],\n features: {\n [FEATURE_TOKEN_BURNABLE.name]: FEATURE_TOKEN_BURNABLE,\n [FEATURE_TOKEN_MINTABLE.name]: FEATURE_TOKEN_MINTABLE,\n [FEATURE_TOKEN_CLAIM_CONDITIONS_V1.name]: FEATURE_TOKEN_CLAIM_CONDITIONS_V1,\n [FEATURE_TOKEN_CLAIM_CONDITIONS_V2.name]: FEATURE_TOKEN_CLAIM_CONDITIONS_V2,\n [FEATURE_TOKEN_CLAIM_PHASES_V1.name]: FEATURE_TOKEN_CLAIM_PHASES_V1,\n [FEATURE_TOKEN_CLAIM_PHASES_V2.name]: FEATURE_TOKEN_CLAIM_PHASES_V2,\n [FEATURE_TOKEN_SIGNATURE_MINTABLE.name]: FEATURE_TOKEN_SIGNATURE_MINTABLE\n }\n};\n\nconst FEATURE_NFT_BURNABLE = {\n name: \"ERC721Burnable\",\n namespace: \"nft.burn\",\n docLinks: {\n sdk: \"sdk.erc721burnable\",\n contracts: \"IBurnableERC721\"\n },\n abis: [Erc721Abi, IBurnableERC721Abi],\n features: {}\n};\nconst FEATURE_NFT_REVEALABLE = {\n name: \"ERC721Revealable\",\n namespace: \"nft.drop.revealer\",\n docLinks: {\n sdk: \"sdk.delayedreveal\",\n contracts: \"DelayedReveal\"\n },\n abis: [Erc721Abi, ILazyMintAbi, DelayedRevealAbi],\n features: {}\n};\nconst FEATURE_NFT_TIERED_DROP = {\n name: \"ERC721TieredDrop\",\n namespace: \"nft.tieredDrop\",\n docLinks: {\n sdk: \"sdk.erc721tiereddrop\",\n contracts: \"TieredDrop\"\n },\n abis: [Erc721Abi, TieredDropAbi],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_CONDITIONS_V1 = {\n name: \"ERC721ClaimConditionsV1\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"DropSinglePhase_V1\"\n },\n abis: [Erc721Abi, ILazyMintAbi, IDropSinglePhaseV1],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_CONDITIONS_V2 = {\n name: \"ERC721ClaimConditionsV2\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"DropSinglePhase\"\n },\n abis: [Erc721Abi, ILazyMintAbi, IDropSinglePhase],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_PHASES_V1 = {\n name: \"ERC721ClaimPhasesV1\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"Drop\"\n },\n abis: [DropERC721_V3Abi],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_PHASES_V2 = {\n name: \"ERC721ClaimPhasesV2\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"Drop\"\n },\n abis: [Erc721Abi, ILazyMintAbi, IDrop],\n features: {}\n};\nconst FEATURE_NFT_CLAIM_CUSTOM = {\n name: \"ERC721ClaimCustom\",\n namespace: \"nft.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc721claimable\",\n contracts: \"IClaimableERC721\"\n },\n abis: [Erc721Abi, ILazyMintAbi, IClaimableERC721],\n features: {}\n};\nconst FEATURE_NFT_LAZY_MINTABLE = {\n name: \"ERC721LazyMintable\",\n namespace: \"nft.drop\",\n docLinks: {\n sdk: \"sdk.erc721lazymintable\",\n contracts: \"LazyMint\"\n },\n abis: [Erc721Abi, ILazyMintAbi],\n features: {\n [FEATURE_NFT_REVEALABLE.name]: FEATURE_NFT_REVEALABLE,\n [FEATURE_NFT_CLAIM_CUSTOM.name]: FEATURE_NFT_CLAIM_CUSTOM,\n [FEATURE_NFT_CLAIM_CONDITIONS_V1.name]: FEATURE_NFT_CLAIM_CONDITIONS_V1,\n [FEATURE_NFT_CLAIM_CONDITIONS_V2.name]: FEATURE_NFT_CLAIM_CONDITIONS_V2,\n [FEATURE_NFT_CLAIM_PHASES_V1.name]: FEATURE_NFT_CLAIM_PHASES_V1,\n [FEATURE_NFT_CLAIM_PHASES_V2.name]: FEATURE_NFT_CLAIM_PHASES_V2\n }\n};\nconst FEATURE_NFT_BATCH_MINTABLE = {\n name: \"ERC721BatchMintable\",\n namespace: \"nft.mint.batch\",\n docLinks: {\n sdk: \"sdk.erc721batchmintable\",\n contracts: \"IMulticall\"\n },\n abis: [Erc721Abi, IMintableERC721Abi, MulticallAbi],\n features: {}\n};\nconst FEATURE_NFT_MINTABLE = {\n name: \"ERC721Mintable\",\n namespace: \"nft.mint\",\n docLinks: {\n sdk: \"sdk.erc721mintable\",\n contracts: \"IMintableERC721\"\n },\n abis: [Erc721Abi, IMintableERC721Abi],\n features: {\n [FEATURE_NFT_BATCH_MINTABLE.name]: FEATURE_NFT_BATCH_MINTABLE\n }\n};\nconst FEATURE_NFT_SIGNATURE_MINTABLE_V2 = {\n name: \"ERC721SignatureMintV2\",\n namespace: \"nft.signature\",\n docLinks: {\n sdk: \"sdk.erc721signaturemint\",\n contracts: \"ISignatureMintERC721\"\n },\n abis: [Erc721Abi, SignatureMintERC721Abi],\n features: {}\n};\nconst FEATURE_NFT_SIGNATURE_MINTABLE_V1 = {\n name: \"ERC721SignatureMintV1\",\n namespace: \"nft.signature\",\n docLinks: {\n sdk: \"sdk.erc721signaturemint\",\n contracts: \"ISignatureMintERC721\"\n },\n abis: [SignatureMintERC721_V1Abi],\n features: {}\n};\nconst FEATURE_NFT_ENUMERABLE = {\n name: \"ERC721Enumerable\",\n namespace: \"nft.query.owned\",\n docLinks: {\n sdk: \"sdk.erc721enumerable\",\n contracts: \"IERC721Enumerable\"\n },\n abis: [Erc721Abi, Erc721EnumerableAbi],\n features: {}\n};\nconst FEATURE_NFT_SUPPLY = {\n name: \"ERC721Supply\",\n namespace: \"nft.query\",\n docLinks: {\n sdk: \"sdk.erc721supply\",\n contracts: \"IERC721Supply\"\n },\n abis: [Erc721Abi, Erc721SupplyAbi],\n features: {\n [FEATURE_NFT_ENUMERABLE.name]: FEATURE_NFT_ENUMERABLE\n }\n};\nconst FEATURE_NFT = {\n name: \"ERC721\",\n namespace: \"nft\",\n docLinks: {\n sdk: \"sdk.erc721\",\n contracts: \"IERC721\"\n },\n abis: [Erc721Abi],\n features: {\n [FEATURE_NFT_BURNABLE.name]: FEATURE_NFT_BURNABLE,\n [FEATURE_NFT_SUPPLY.name]: FEATURE_NFT_SUPPLY,\n [FEATURE_NFT_MINTABLE.name]: FEATURE_NFT_MINTABLE,\n [FEATURE_NFT_LAZY_MINTABLE.name]: FEATURE_NFT_LAZY_MINTABLE,\n [FEATURE_NFT_SIGNATURE_MINTABLE_V1.name]: FEATURE_NFT_SIGNATURE_MINTABLE_V1,\n [FEATURE_NFT_SIGNATURE_MINTABLE_V2.name]: FEATURE_NFT_SIGNATURE_MINTABLE_V2,\n [FEATURE_NFT_TIERED_DROP.name]: FEATURE_NFT_TIERED_DROP\n }\n};\n\nconst FEATURE_EDITION_BURNABLE = {\n name: \"ERC1155Burnable\",\n namespace: \"edition.burn\",\n docLinks: {\n sdk: \"sdk.erc1155burnable\",\n contracts: \"IBurnableERC1155\"\n },\n abis: [Erc1155Abi, IBurnableERC1155Abi],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_CONDITIONS_V1 = {\n name: \"ERC1155ClaimConditionsV1\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"DropSinglePhase1155\"\n },\n abis: [Erc1155Abi, ILazyMintAbi, IDropSinglePhase1155_V1],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_CONDITIONS_V2 = {\n name: \"ERC1155ClaimConditionsV2\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"DropSinglePhase1155\"\n },\n abis: [Erc1155Abi, ILazyMintAbi, IDropSinglePhase1155],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_PHASES_V2 = {\n name: \"ERC1155ClaimPhasesV2\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"Drop1155\"\n },\n abis: [Erc1155Abi, ILazyMintAbi, IDropMultiPhase1155],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_PHASES_V1 = {\n name: \"ERC1155ClaimPhasesV1\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"Drop1155\"\n },\n abis: [DropERC1155_V2Abi],\n features: {}\n};\nconst FEATURE_EDITION_CLAIM_CUSTOM = {\n name: \"ERC1155ClaimCustom\",\n namespace: \"edition.drop.claim\",\n docLinks: {\n sdk: \"sdk.erc1155claimable\",\n contracts: \"IClaimableERC1155\"\n },\n abis: [Erc1155Abi, ILazyMintAbi, IClaimableERC1155],\n features: {}\n};\nconst FEATURE_EDITION_REVEALABLE = {\n name: \"ERC1155Revealable\",\n namespace: \"edition.drop.revealer\",\n docLinks: {\n sdk: \"sdk.drop.delayedreveal\",\n contracts: \"DelayedReveal\"\n },\n abis: [Erc1155Abi, ILazyMintAbi, DelayedRevealAbi],\n features: {}\n};\nconst FEATURE_EDITION_LAZY_MINTABLE_V2 = {\n name: \"ERC1155LazyMintableV2\",\n namespace: \"edition.drop\",\n docLinks: {\n sdk: \"sdk.erc1155droppable\",\n contracts: \"LazyMint\"\n },\n abis: [Erc1155Abi, ILazyMintAbi],\n features: {\n [FEATURE_EDITION_REVEALABLE.name]: FEATURE_EDITION_REVEALABLE,\n [FEATURE_EDITION_CLAIM_CUSTOM.name]: FEATURE_EDITION_CLAIM_CUSTOM,\n [FEATURE_EDITION_CLAIM_CONDITIONS_V1.name]: FEATURE_EDITION_CLAIM_CONDITIONS_V1,\n [FEATURE_EDITION_CLAIM_CONDITIONS_V2.name]: FEATURE_EDITION_CLAIM_CONDITIONS_V2,\n [FEATURE_EDITION_CLAIM_PHASES_V2.name]: FEATURE_EDITION_CLAIM_PHASES_V2\n }\n};\nconst FEATURE_EDITION_LAZY_MINTABLE_V1 = {\n name: \"ERC1155LazyMintableV1\",\n namespace: \"edition.drop\",\n docLinks: {\n sdk: \"sdk.erc1155droppable\",\n contracts: \"LazyMint\"\n },\n abis: [DropERC1155_V2Abi],\n features: {\n [FEATURE_EDITION_CLAIM_PHASES_V1.name]: FEATURE_EDITION_CLAIM_PHASES_V1\n }\n};\nconst FEATURE_EDITION_SIGNATURE_MINTABLE = {\n name: \"ERC1155SignatureMintable\",\n namespace: \"edition.signature\",\n docLinks: {\n sdk: \"sdk.erc1155signaturemintable\",\n contracts: \"ISignatureMintERC1155\"\n },\n abis: [Erc1155Abi, ISignatureMintERC1155Abi],\n features: {}\n};\nconst FEATURE_EDITION_BATCH_MINTABLE = {\n name: \"ERC1155BatchMintable\",\n namespace: \"edition.mint.batch\",\n docLinks: {\n sdk: \"sdk.erc1155batchmintable\",\n contracts: \"IMulticall\"\n },\n abis: [Erc1155Abi, IMintableERC1155Abi, MulticallAbi],\n features: {}\n};\nconst FEATURE_EDITION_MINTABLE = {\n name: \"ERC1155Mintable\",\n namespace: \"edition.mint\",\n docLinks: {\n sdk: \"sdk.erc1155mintable\",\n contracts: \"IMintableERC1155\"\n },\n abis: [Erc1155Abi, IMintableERC1155Abi],\n features: {\n [FEATURE_EDITION_BATCH_MINTABLE.name]: FEATURE_EDITION_BATCH_MINTABLE\n }\n};\nconst FEATURE_EDITION_ENUMERABLE = {\n name: \"ERC1155Enumerable\",\n namespace: \"edition.query\",\n docLinks: {\n sdk: \"sdk.erc1155\",\n contracts: \"IERC1155\"\n },\n abis: [Erc1155Abi, Erc1155EnumerableAbi],\n features: {}\n};\nconst FEATURE_EDITION = {\n name: \"ERC1155\",\n namespace: \"edition\",\n docLinks: {\n sdk: \"sdk.erc1155enumerable\",\n contracts: \"IERC1155Enumerable\"\n },\n abis: [Erc1155Abi],\n features: {\n [FEATURE_EDITION_BURNABLE.name]: FEATURE_EDITION_BURNABLE,\n [FEATURE_EDITION_ENUMERABLE.name]: FEATURE_EDITION_ENUMERABLE,\n [FEATURE_EDITION_MINTABLE.name]: FEATURE_EDITION_MINTABLE,\n [FEATURE_EDITION_LAZY_MINTABLE_V1.name]: FEATURE_EDITION_LAZY_MINTABLE_V1,\n [FEATURE_EDITION_LAZY_MINTABLE_V2.name]: FEATURE_EDITION_LAZY_MINTABLE_V2,\n [FEATURE_EDITION_REVEALABLE.name]: FEATURE_EDITION_REVEALABLE,\n [FEATURE_EDITION_SIGNATURE_MINTABLE.name]: FEATURE_EDITION_SIGNATURE_MINTABLE\n }\n};\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst SUPPORTED_FEATURES = {\n [FEATURE_TOKEN.name]: FEATURE_TOKEN,\n [FEATURE_NFT.name]: FEATURE_NFT,\n [FEATURE_EDITION.name]: FEATURE_EDITION,\n [FEATURE_ROYALTY.name]: FEATURE_ROYALTY,\n [FEATURE_PLATFORM_FEE.name]: FEATURE_PLATFORM_FEE,\n [FEATURE_PRIMARY_SALE.name]: FEATURE_PRIMARY_SALE,\n [FEATURE_PERMISSIONS.name]: FEATURE_PERMISSIONS,\n [FEATURE_METADATA.name]: FEATURE_METADATA,\n [FEATURE_APPURI.name]: FEATURE_APPURI,\n [FEATURE_OWNER.name]: FEATURE_OWNER,\n [FEATURE_GASLESS.name]: FEATURE_GASLESS,\n [FEATURE_PACK_VRF.name]: FEATURE_PACK_VRF,\n [FEATURE_PLUGIN_ROUTER.name]: FEATURE_PLUGIN_ROUTER,\n [FEATURE_DIRECT_LISTINGS.name]: FEATURE_DIRECT_LISTINGS,\n [FEATURE_ENGLISH_AUCTIONS.name]: FEATURE_ENGLISH_AUCTIONS,\n [FEATURE_OFFERS.name]: FEATURE_OFFERS\n};\n\n/* eslint-disable eqeqeq */\nlet decoder;\ntry {\n decoder = new TextDecoder();\n} catch (error) {}\nlet src;\nlet srcEnd;\nlet position = 0;\nconst LEGACY_RECORD_INLINE_ID = 105;\nconst RECORD_DEFINITIONS_ID = 0xdffe;\nconst RECORD_INLINE_ID = 0xdfff; // temporary first-come first-serve tag // proposed tag: 0x7265 // 're'\nconst BUNDLED_STRINGS_ID = 0xdff9;\nconst PACKED_REFERENCE_TAG_ID = 6;\nconst STOP_CODE = {};\nlet currentDecoder = {};\nlet currentStructures;\nlet srcString;\nlet srcStringStart = 0;\nlet srcStringEnd = 0;\nlet bundledStrings;\nlet referenceMap;\nlet currentExtensions = [];\nlet currentExtensionRanges = [];\nlet packedValues;\nlet dataView;\nlet restoreMapsAsObject;\nlet defaultOptions = {\n useRecords: false,\n mapsAsObjects: true\n};\nlet sequentialMode = false;\nclass Decoder {\n constructor(options) {\n if (options) {\n if ((options.keyMap || options._keyMap) && !options.useRecords) {\n options.useRecords = false;\n options.mapsAsObjects = true;\n }\n if (options.useRecords === false && options.mapsAsObjects === undefined) {\n options.mapsAsObjects = true;\n }\n if (options.getStructures) {\n options.getShared = options.getStructures;\n }\n if (options.getShared && !options.structures) {\n (options.structures = []).uninitialized = true;\n } // this is what we use to denote an uninitialized structures\n if (options.keyMap) {\n this.mapKey = new Map();\n for (let [k, v] of Object.entries(options.keyMap)) {\n this.mapKey.set(v, k);\n }\n }\n }\n Object.assign(this, options);\n }\n decodeKey(key) {\n return this.keyMap ? this.mapKey.get(key) || key : key;\n }\n decode(source, end) {\n if (src) {\n // re-entrant execution, save the state and restore it after we do this decode\n return saveState(() => {\n clearSource();\n return this ? this.decode(source, end) : Decoder.prototype.decode.call(defaultOptions, source, end);\n });\n }\n srcEnd = end > -1 ? end : source.length;\n position = 0;\n srcStringEnd = 0;\n srcString = null;\n bundledStrings = null;\n src = source;\n // this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n // technique for getting data from a database where it can be copied into an existing buffer instead of creating\n // new ones\n try {\n dataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength));\n } catch (error) {\n // if it doesn't have a buffer, maybe it is the wrong type of object\n src = null;\n if (source instanceof Uint8Array) {\n throw error;\n }\n throw new Error(\"Source must be a Uint8Array or Buffer but was a \" + (source && typeof source === \"object\" ? source.constructor.name : typeof source));\n }\n if (this instanceof Decoder) {\n currentDecoder = this;\n packedValues = this.sharedValues && (this.pack ? new Array(this.maxPrivatePackedValues || 16).concat(this.sharedValues) : this.sharedValues);\n if (this.structures) {\n currentStructures = this.structures;\n return checkedRead();\n } else if (!currentStructures || currentStructures.length > 0) {\n currentStructures = [];\n }\n } else {\n currentDecoder = defaultOptions;\n if (!currentStructures || currentStructures.length > 0) {\n currentStructures = [];\n }\n packedValues = null;\n }\n return checkedRead();\n }\n}\nfunction checkedRead() {\n try {\n let result = read();\n if (bundledStrings) {\n if (position >= bundledStrings.postBundlePosition) {\n let error = new Error(\"Unexpected bundle position\");\n error.incomplete = true;\n throw error;\n }\n // bundled strings to skip past\n position = bundledStrings.postBundlePosition;\n bundledStrings = null;\n }\n if (position == srcEnd) {\n // finished reading this source, cleanup references\n currentStructures = null;\n src = null;\n if (referenceMap) {\n referenceMap = null;\n }\n } else if (position > srcEnd) {\n // over read\n let error = new Error(\"Unexpected end of CBOR data\");\n error.incomplete = true;\n throw error;\n } else if (!sequentialMode) {\n throw new Error(\"Data read, but end of buffer not reached\");\n }\n // else more to read, but we are reading sequentially, so don't clear source yet\n return result;\n } catch (error) {\n clearSource();\n if (error instanceof RangeError || error.message.startsWith(\"Unexpected end of buffer\")) {\n error.incomplete = true;\n }\n throw error;\n }\n}\nfunction read() {\n let token = src[position++];\n let majorType = token >> 5;\n token = token & 0x1f;\n if (token > 0x17) {\n switch (token) {\n case 0x18:\n token = src[position++];\n break;\n case 0x19:\n if (majorType == 7) {\n return getFloat16();\n }\n token = dataView.getUint16(position);\n position += 2;\n break;\n case 0x1a:\n if (majorType == 7) {\n let value = dataView.getFloat32(position);\n if (currentDecoder.useFloat32 > 2) {\n // this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n let multiplier = mult10[(src[position] & 0x7f) << 1 | src[position + 1] >> 7];\n position += 4;\n return (multiplier * value + (value > 0 ? 0.5 : -0.5) >> 0) / multiplier;\n }\n position += 4;\n return value;\n }\n token = dataView.getUint32(position);\n position += 4;\n break;\n case 0x1b:\n if (majorType == 7) {\n let value = dataView.getFloat64(position);\n position += 8;\n return value;\n }\n if (majorType > 1) {\n if (dataView.getUint32(position) > 0) {\n throw new Error(\"JavaScript does not support arrays, maps, or strings with length over 4294967295\");\n }\n token = dataView.getUint32(position + 4);\n } else if (currentDecoder.int64AsNumber) {\n token = dataView.getUint32(position) * 0x100000000;\n token += dataView.getUint32(position + 4);\n } else {\n token = dataView.getBigUint64(position);\n }\n position += 8;\n break;\n case 0x1f:\n // indefinite length\n switch (majorType) {\n case 2: // byte string\n case 3:\n // text string\n throw new Error(\"Indefinite length not supported for byte or text strings\");\n case 4:\n // array\n let array = [];\n let value,\n i = 0;\n while ((value = read()) != STOP_CODE) {\n array[i++] = value;\n }\n return majorType == 4 ? array : majorType == 3 ? array.join(\"\") : Buffer.concat(array);\n case 5:\n // map\n let key;\n if (currentDecoder.mapsAsObjects) {\n let object = {};\n if (currentDecoder.keyMap) {\n while ((key = read()) != STOP_CODE) {\n object[safeKey(currentDecoder.decodeKey(key))] = read();\n }\n } else {\n while ((key = read()) != STOP_CODE) {\n object[safeKey(key)] = read();\n }\n }\n return object;\n } else {\n if (restoreMapsAsObject) {\n currentDecoder.mapsAsObjects = true;\n restoreMapsAsObject = false;\n }\n let map = new Map();\n if (currentDecoder.keyMap) {\n while ((key = read()) != STOP_CODE) {\n map.set(currentDecoder.decodeKey(key), read());\n }\n } else {\n while ((key = read()) != STOP_CODE) {\n map.set(key, read());\n }\n }\n return map;\n }\n case 7:\n return STOP_CODE;\n default:\n throw new Error(\"Invalid major type for indefinite length \" + majorType);\n }\n default:\n throw new Error(\"Unknown token \" + token);\n }\n }\n switch (majorType) {\n case 0:\n // positive int\n return token;\n case 1:\n // negative int\n return ~token;\n case 2:\n // buffer\n return readBin(token);\n case 3:\n // string\n if (srcStringEnd >= position) {\n return srcString.slice(position - srcStringStart, (position += token) - srcStringStart);\n }\n if (srcStringEnd == 0 && srcEnd < 140 && token < 32) {\n // for small blocks, avoiding the overhead of the extract call is helpful\n let string = token < 16 ? shortStringInJS(token) : longStringInJS(token);\n if (string != null) {\n return string;\n }\n }\n return readFixedString(token);\n case 4:\n // array\n let array = new Array(token);\n //if (currentDecoder.keyMap) for (let i = 0; i < token; i++) array[i] = currentDecoder.decodeKey(read())\n //else\n for (let i = 0; i < token; i++) {\n array[i] = read();\n }\n return array;\n case 5:\n // map\n if (currentDecoder.mapsAsObjects) {\n let object = {};\n if (currentDecoder.keyMap) {\n for (let i = 0; i < token; i++) {\n object[safeKey(currentDecoder.decodeKey(read()))] = read();\n }\n } else {\n for (let i = 0; i < token; i++) {\n object[safeKey(read())] = read();\n }\n }\n return object;\n } else {\n if (restoreMapsAsObject) {\n currentDecoder.mapsAsObjects = true;\n restoreMapsAsObject = false;\n }\n let map = new Map();\n if (currentDecoder.keyMap) {\n for (let i = 0; i < token; i++) {\n map.set(currentDecoder.decodeKey(read()), read());\n }\n } else {\n for (let i = 0; i < token; i++) {\n map.set(read(), read());\n }\n }\n return map;\n }\n case 6:\n // extension\n if (token >= BUNDLED_STRINGS_ID) {\n let structure = currentStructures[token & 0x1fff]; // check record structures first\n // At some point we may provide an option for dynamic tag assignment with a range like token >= 8 && (token < 16 || (token > 0x80 && token < 0xc0) || (token > 0x130 && token < 0x4000))\n if (structure) {\n if (!structure.read) {\n structure.read = createStructureReader(structure);\n }\n return structure.read();\n }\n if (token < 0x10000) {\n if (token == RECORD_INLINE_ID) {\n // we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n return recordDefinition(read());\n } else if (token == RECORD_DEFINITIONS_ID) {\n let length = readJustLength();\n let id = read();\n for (let i = 2; i < length; i++) {\n recordDefinition([id++, read()]);\n }\n return read();\n } else if (token == BUNDLED_STRINGS_ID) {\n return readBundleExt();\n }\n if (currentDecoder.getShared) {\n loadShared();\n structure = currentStructures[token & 0x1fff];\n if (structure) {\n if (!structure.read) {\n structure.read = createStructureReader(structure);\n }\n return structure.read();\n }\n }\n }\n }\n let extension = currentExtensions[token];\n if (extension) {\n if (extension.handlesRead) {\n return extension(read);\n } else {\n return extension(read());\n }\n } else {\n let input = read();\n for (let i = 0; i < currentExtensionRanges.length; i++) {\n let value = currentExtensionRanges[i](token, input);\n if (value !== undefined) {\n return value;\n }\n }\n return new Tag(input, token);\n }\n case 7:\n // fixed value\n switch (token) {\n case 0x14:\n return false;\n case 0x15:\n return true;\n case 0x16:\n return null;\n case 0x17:\n return;\n // undefined\n case 0x1f:\n default:\n let packedValue = (packedValues || getPackedValues())[token];\n if (packedValue !== undefined) {\n return packedValue;\n }\n throw new Error(\"Unknown token \" + token);\n }\n default:\n // negative int\n if (isNaN(token)) {\n let error = new Error(\"Unexpected end of CBOR data\");\n error.incomplete = true;\n throw error;\n }\n throw new Error(\"Unknown CBOR token \" + token);\n }\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/;\nfunction createStructureReader(structure) {\n function readObject() {\n // get the array size from the header\n let length = src[position++];\n //let majorType = token >> 5\n length = length & 0x1f;\n if (length > 0x17) {\n switch (length) {\n case 0x18:\n length = src[position++];\n break;\n case 0x19:\n length = dataView.getUint16(position);\n position += 2;\n break;\n case 0x1a:\n length = dataView.getUint32(position);\n position += 4;\n break;\n default:\n throw new Error(\"Expected array header, but got \" + src[position - 1]);\n }\n }\n // This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n let compiledReader = this.compiledReader; // first look to see if we have the fast compiled function\n while (compiledReader) {\n // we have a fast compiled object literal reader\n if (compiledReader.propertyCount === length) {\n return compiledReader(read);\n } // with the right length, so we use it\n compiledReader = compiledReader.next; // see if there is another reader with the right length\n }\n\n if (this.slowReads++ >= 3) {\n // create a fast compiled reader\n let array = this.length == length ? this : this.slice(0, length);\n compiledReader = currentDecoder.keyMap ? new Function(\"r\", \"return {\" + array.map(k => currentDecoder.decodeKey(k)).map(k => validName.test(k) ? safeKey(k) + \":r()\" : \"[\" + JSON.stringify(k) + \"]:r()\").join(\",\") + \"}\") : new Function(\"r\", \"return {\" + array.map(key => validName.test(key) ? safeKey(key) + \":r()\" : \"[\" + JSON.stringify(key) + \"]:r()\").join(\",\") + \"}\");\n if (this.compiledReader) {\n compiledReader.next = this.compiledReader;\n } // if there is an existing one, we store multiple readers as a linked list because it is usually pretty rare to have multiple readers (of different length) for the same structure\n compiledReader.propertyCount = length;\n this.compiledReader = compiledReader;\n return compiledReader(read);\n }\n let object = {};\n if (currentDecoder.keyMap) {\n for (let i = 0; i < length; i++) {\n object[safeKey(currentDecoder.decodeKey(this[i]))] = read();\n }\n } else {\n for (let i = 0; i < length; i++) {\n object[safeKey(this[i])] = read();\n }\n }\n return object;\n }\n structure.slowReads = 0;\n return readObject;\n}\nfunction safeKey(key) {\n return key === \"__proto__\" ? \"__proto_\" : key;\n}\nlet readFixedString = readStringJS;\nfunction readStringJS(length) {\n let result;\n if (length < 16) {\n if (result = shortStringInJS(length)) {\n return result;\n }\n }\n if (length > 64 && decoder) {\n return decoder.decode(src.subarray(position, position += length));\n }\n const end = position + length;\n const units = [];\n result = \"\";\n while (position < end) {\n const byte1 = src[position++];\n if ((byte1 & 0x80) === 0) {\n // 1 byte\n units.push(byte1);\n } else if ((byte1 & 0xe0) === 0xc0) {\n // 2 bytes\n const byte2 = src[position++] & 0x3f;\n units.push((byte1 & 0x1f) << 6 | byte2);\n } else if ((byte1 & 0xf0) === 0xe0) {\n // 3 bytes\n const byte2 = src[position++] & 0x3f;\n const byte3 = src[position++] & 0x3f;\n units.push((byte1 & 0x1f) << 12 | byte2 << 6 | byte3);\n } else if ((byte1 & 0xf8) === 0xf0) {\n // 4 bytes\n const byte2 = src[position++] & 0x3f;\n const byte3 = src[position++] & 0x3f;\n const byte4 = src[position++] & 0x3f;\n let unit = (byte1 & 0x07) << 0x12 | byte2 << 0x0c | byte3 << 0x06 | byte4;\n if (unit > 0xffff) {\n unit -= 0x10000;\n units.push(unit >>> 10 & 0x3ff | 0xd800);\n unit = 0xdc00 | unit & 0x3ff;\n }\n units.push(unit);\n } else {\n units.push(byte1);\n }\n if (units.length >= 0x1000) {\n result += fromCharCode.apply(String, units);\n units.length = 0;\n }\n }\n if (units.length > 0) {\n result += fromCharCode.apply(String, units);\n }\n return result;\n}\nlet fromCharCode = String.fromCharCode;\nfunction longStringInJS(length) {\n let start = position;\n let bytes = new Array(length);\n for (let i = 0; i < length; i++) {\n const byte = src[position++];\n if ((byte & 0x80) > 0) {\n position = start;\n return;\n }\n bytes[i] = byte;\n }\n return fromCharCode.apply(String, bytes);\n}\nfunction shortStringInJS(length) {\n if (length < 4) {\n if (length < 2) {\n if (length === 0) {\n return \"\";\n } else {\n let a = src[position++];\n if ((a & 0x80) > 1) {\n position -= 1;\n return;\n }\n return fromCharCode(a);\n }\n } else {\n let a = src[position++];\n let b = src[position++];\n if ((a & 0x80) > 0 || (b & 0x80) > 0) {\n position -= 2;\n return;\n }\n if (length < 3) {\n return fromCharCode(a, b);\n }\n let c = src[position++];\n if ((c & 0x80) > 0) {\n position -= 3;\n return;\n }\n return fromCharCode(a, b, c);\n }\n } else {\n let a = src[position++];\n let b = src[position++];\n let c = src[position++];\n let d = src[position++];\n if ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n position -= 4;\n return;\n }\n if (length < 6) {\n if (length === 4) {\n return fromCharCode(a, b, c, d);\n } else {\n let e = src[position++];\n if ((e & 0x80) > 0) {\n position -= 5;\n return;\n }\n return fromCharCode(a, b, c, d, e);\n }\n } else if (length < 8) {\n let e = src[position++];\n let f = src[position++];\n if ((e & 0x80) > 0 || (f & 0x80) > 0) {\n position -= 6;\n return;\n }\n if (length < 7) {\n return fromCharCode(a, b, c, d, e, f);\n }\n let g = src[position++];\n if ((g & 0x80) > 0) {\n position -= 7;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g);\n } else {\n let e = src[position++];\n let f = src[position++];\n let g = src[position++];\n let h = src[position++];\n if ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n position -= 8;\n return;\n }\n if (length < 10) {\n if (length === 8) {\n return fromCharCode(a, b, c, d, e, f, g, h);\n } else {\n let i = src[position++];\n if ((i & 0x80) > 0) {\n position -= 9;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i);\n }\n } else if (length < 12) {\n let i = src[position++];\n let j = src[position++];\n if ((i & 0x80) > 0 || (j & 0x80) > 0) {\n position -= 10;\n return;\n }\n if (length < 11) {\n return fromCharCode(a, b, c, d, e, f, g, h, i, j);\n }\n let k = src[position++];\n if ((k & 0x80) > 0) {\n position -= 11;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k);\n } else {\n let i = src[position++];\n let j = src[position++];\n let k = src[position++];\n let l = src[position++];\n if ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n position -= 12;\n return;\n }\n if (length < 14) {\n if (length === 12) {\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l);\n } else {\n let m = src[position++];\n if ((m & 0x80) > 0) {\n position -= 13;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m);\n }\n } else {\n let m = src[position++];\n let n = src[position++];\n if ((m & 0x80) > 0 || (n & 0x80) > 0) {\n position -= 14;\n return;\n }\n if (length < 15) {\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n);\n }\n let o = src[position++];\n if ((o & 0x80) > 0) {\n position -= 15;\n return;\n }\n return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);\n }\n }\n }\n }\n}\nfunction readBin(length) {\n return currentDecoder.copyBuffers ?\n // specifically use the copying slice (not the node one)\n Uint8Array.prototype.slice.call(src, position, position += length) : src.subarray(position, position += length);\n}\nlet f32Array = new Float32Array(1);\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4);\nfunction getFloat16() {\n let byte0 = src[position++];\n let byte1 = src[position++];\n let exponent = (byte0 & 0x7f) >> 2;\n if (exponent === 0x1f) {\n // specials\n if (byte1 || byte0 & 3) {\n return NaN;\n }\n return byte0 & 0x80 ? -Infinity : Infinity;\n }\n if (exponent === 0) {\n // sub-normals\n // significand with 10 fractional bits and divided by 2^14\n let abs = ((byte0 & 3) << 8 | byte1) / (1 << 24);\n return byte0 & 0x80 ? -abs : abs;\n }\n u8Array[3] = byte0 & 0x80 |\n // sign bit\n (exponent >> 1) + 56; // 4 of 5 of the exponent bits, re-offset-ed\n u8Array[2] = (byte0 & 7) << 5 |\n // last exponent bit and first two mantissa bits\n byte1 >> 3; // next 5 bits of mantissa\n u8Array[1] = byte1 << 5; // last three bits of mantissa\n u8Array[0] = 0;\n return f32Array[0];\n}\nclass Tag {\n constructor(value, tag) {\n this.value = value;\n this.tag = tag;\n }\n}\ncurrentExtensions[0] = dateString => {\n // string date extension\n return new Date(dateString);\n};\ncurrentExtensions[1] = epochSec => {\n // numeric date extension\n return new Date(Math.round(epochSec * 1000));\n};\ncurrentExtensions[2] = buffer => {\n // bigint extension\n let value = BigInt(0);\n for (let i = 0, l = buffer.byteLength; i < l; i++) {\n value = BigInt(buffer[i]) + value << BigInt(8);\n }\n return value;\n};\ncurrentExtensions[3] = buffer => {\n // negative bigint extension\n return BigInt(-1) - currentExtensions[2](buffer);\n};\ncurrentExtensions[4] = fraction => {\n // best to reparse to maintain accuracy\n return Number(fraction[1] + \"e\" + fraction[0]);\n};\ncurrentExtensions[5] = fraction => {\n // probably not sufficiently accurate\n return fraction[1] * Math.exp(fraction[0] * Math.log(2));\n};\n\n// the registration of the record definition extension\nconst recordDefinition = definition => {\n let id = definition[0] - 0xe000;\n let structure = definition[1];\n let existingStructure = currentStructures[id];\n if (existingStructure && existingStructure.isShared) {\n (currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure;\n }\n currentStructures[id] = structure;\n structure.read = createStructureReader(structure);\n let object = {};\n if (currentDecoder.keyMap) {\n for (let i = 2, l = definition.length; i < l; i++) {\n let key = currentDecoder.decodeKey(structure[i - 2]);\n object[safeKey(key)] = definition[i];\n }\n } else {\n for (let i = 2, l = definition.length; i < l; i++) {\n let key = structure[i - 2];\n object[safeKey(key)] = definition[i];\n }\n }\n return object;\n};\ncurrentExtensions[LEGACY_RECORD_INLINE_ID] = recordDefinition;\ncurrentExtensions[14] = value => {\n if (bundledStrings) {\n return bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 += value);\n }\n return new Tag(value, 14);\n};\ncurrentExtensions[15] = value => {\n if (bundledStrings) {\n return bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value);\n }\n return new Tag(value, 15);\n};\nlet glbl = {\n Error,\n RegExp\n};\ncurrentExtensions[27] = data => {\n // http://cbor.schmorp.de/generic-object\n return (glbl[data[0]] || Error)(data[1], data[2]);\n};\nconst packedTable = _read => {\n if (src[position++] != 0x84) {\n throw new Error(\"Packed values structure must be followed by a 4 element array\");\n }\n let newPackedValues = _read(); // packed values\n packedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues;\n packedValues.prefixes = _read();\n packedValues.suffixes = _read();\n return _read(); // read the rump\n};\n\npackedTable.handlesRead = true;\ncurrentExtensions[51] = packedTable;\ncurrentExtensions[PACKED_REFERENCE_TAG_ID] = data => {\n // packed reference\n if (!packedValues) {\n if (currentDecoder.getShared) {\n loadShared();\n } else {\n return new Tag(data, PACKED_REFERENCE_TAG_ID);\n }\n }\n if (typeof data === \"number\") {\n return packedValues[16 + (data >= 0 ? 2 * data : -2 * data - 1)];\n }\n throw new Error(\"No support for non-integer packed references yet\");\n};\ncurrentExtensions[25] = id => {\n return stringRefs[id];\n};\ncurrentExtensions[256] = _read => {\n stringRefs = [];\n try {\n return _read();\n } finally {\n stringRefs = null;\n }\n};\ncurrentExtensions[256].handlesRead = true;\ncurrentExtensions[28] = _read => {\n // shareable http://cbor.schmorp.de/value-sharing (for structured clones)\n if (!referenceMap) {\n referenceMap = new Map();\n referenceMap.id = 0;\n }\n let id = referenceMap.id++;\n let token = src[position];\n let target;\n // TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\n // ahead past references to record structure definitions\n if (token >> 5 == 4) {\n target = [];\n } else {\n target = {};\n }\n let refEntry = {\n target\n }; // a placeholder object\n referenceMap.set(id, refEntry);\n let targetProperties = _read(); // read the next value as the target object to id\n if (refEntry.used) {\n // there is a cycle, so we have to assign properties to original target\n return Object.assign(target, targetProperties);\n }\n refEntry.target = targetProperties; // the placeholder wasn't used, replace with the deserialized one\n return targetProperties; // no cycle, can just use the returned read object\n};\n\ncurrentExtensions[28].handlesRead = true;\ncurrentExtensions[29] = id => {\n // sharedref http://cbor.schmorp.de/value-sharing (for structured clones)\n let refEntry = referenceMap.get(id);\n refEntry.used = true;\n return refEntry.target;\n};\ncurrentExtensions[258] = array => new Set(array); // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n(currentExtensions[259] = _read => {\n // https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec\n // for decoding as a standard Map\n if (currentDecoder.mapsAsObjects) {\n currentDecoder.mapsAsObjects = false;\n restoreMapsAsObject = true;\n }\n return _read();\n}).handlesRead = true;\nfunction combine(a, b) {\n if (typeof a === \"string\") {\n return a + b;\n }\n if (a instanceof Array) {\n return a.concat(b);\n }\n return Object.assign({}, a, b);\n}\nfunction getPackedValues() {\n if (!packedValues) {\n if (currentDecoder.getShared) {\n loadShared();\n } else {\n throw new Error(\"No packed values available\");\n }\n }\n return packedValues;\n}\nconst SHARED_DATA_TAG_ID = 0x53687264; // ascii 'Shrd'\ncurrentExtensionRanges.push((tag, input) => {\n if (tag >= 225 && tag <= 255) {\n return combine(getPackedValues().prefixes[tag - 224], input);\n }\n if (tag >= 28704 && tag <= 32767) {\n return combine(getPackedValues().prefixes[tag - 28672], input);\n }\n if (tag >= 1879052288 && tag <= 2147483647) {\n return combine(getPackedValues().prefixes[tag - 1879048192], input);\n }\n if (tag >= 216 && tag <= 223) {\n return combine(input, getPackedValues().suffixes[tag - 216]);\n }\n if (tag >= 27647 && tag <= 28671) {\n return combine(input, getPackedValues().suffixes[tag - 27639]);\n }\n if (tag >= 1811940352 && tag <= 1879048191) {\n return combine(input, getPackedValues().suffixes[tag - 1811939328]);\n }\n if (tag == SHARED_DATA_TAG_ID) {\n // we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n return {\n packedValues: packedValues,\n structures: currentStructures.slice(0),\n version: input\n };\n }\n if (tag == 55799) {\n // self-descriptive CBOR tag, just return input value\n return input;\n }\n});\nconst isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1;\nconst typedArrays = [Uint8Array];\nconst typedArrayTags = [64];\nfor (let i = 0; i < typedArrays.length; i++) {\n registerTypedArray(typedArrays[i], typedArrayTags[i]);\n}\nfunction registerTypedArray(TypedArray, tag) {\n let dvMethod = \"get\" + TypedArray.name.slice(0, -5);\n if (typeof TypedArray !== \"function\") {\n TypedArray = null;\n }\n let bytesPerElement = TypedArray.BYTES_PER_ELEMENT;\n for (let littleEndian = 0; littleEndian < 2; littleEndian++) {\n if (!littleEndian && bytesPerElement == 1) {\n continue;\n }\n let sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3;\n currentExtensions[littleEndian ? tag : tag - 4] = bytesPerElement == 1 || littleEndian == isLittleEndianMachine ? buffer => {\n if (!TypedArray) {\n throw new Error(\"Could not find typed array for code \" + tag);\n }\n // we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\n return new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer);\n } : buffer => {\n if (!TypedArray) {\n throw new Error(\"Could not find typed array for code \" + tag);\n }\n let dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let elements = buffer.length >> sizeShift;\n let ta = new TypedArray(elements);\n let method = dv[dvMethod];\n for (let i = 0; i < elements; i++) {\n ta[i] = method.call(dv, i << sizeShift, littleEndian);\n }\n return ta;\n };\n }\n}\nfunction readBundleExt() {\n let length = readJustLength();\n let bundlePosition = position + read();\n for (let i = 2; i < length; i++) {\n // skip past bundles that were already read\n let bundleLength = readJustLength(); // this will increment position, so must add to position afterwards\n position += bundleLength;\n }\n let dataPosition = position;\n position = bundlePosition;\n bundledStrings = [readStringJS(readJustLength()), readStringJS(readJustLength())];\n bundledStrings.position0 = 0;\n bundledStrings.position1 = 0;\n bundledStrings.postBundlePosition = position;\n position = dataPosition;\n return read();\n}\nfunction readJustLength() {\n let token = src[position++] & 0x1f;\n if (token > 0x17) {\n switch (token) {\n case 0x18:\n token = src[position++];\n break;\n case 0x19:\n token = dataView.getUint16(position);\n position += 2;\n break;\n case 0x1a:\n token = dataView.getUint32(position);\n position += 4;\n break;\n }\n }\n return token;\n}\nfunction loadShared() {\n if (currentDecoder.getShared) {\n let sharedData = saveState(() => {\n // save the state in case getShared modifies our buffer\n src = null;\n return currentDecoder.getShared();\n }) || {};\n let updatedStructures = sharedData.structures || [];\n currentDecoder.sharedVersion = sharedData.version;\n packedValues = currentDecoder.sharedValues = sharedData.packedValues;\n if (currentStructures === true) {\n currentDecoder.structures = currentStructures = updatedStructures;\n } else {\n currentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures));\n }\n }\n}\nfunction saveState(callback) {\n let savedSrcEnd = srcEnd;\n let savedPosition = position;\n let savedSrcStringStart = srcStringStart;\n let savedSrcStringEnd = srcStringEnd;\n let savedSrcString = srcString;\n let savedReferenceMap = referenceMap;\n let savedBundledStrings = bundledStrings;\n\n // TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n let savedSrc = new Uint8Array(src.slice(0, srcEnd)); // we copy the data in case it changes while external data is processed\n let savedStructures = currentStructures;\n let savedDecoder = currentDecoder;\n let savedSequentialMode = sequentialMode;\n let value = callback();\n srcEnd = savedSrcEnd;\n position = savedPosition;\n srcStringStart = savedSrcStringStart;\n srcStringEnd = savedSrcStringEnd;\n srcString = savedSrcString;\n referenceMap = savedReferenceMap;\n bundledStrings = savedBundledStrings;\n src = savedSrc;\n sequentialMode = savedSequentialMode;\n currentStructures = savedStructures;\n currentDecoder = savedDecoder;\n dataView = new DataView(src.buffer, src.byteOffset, src.byteLength);\n return value;\n}\nfunction clearSource() {\n src = null;\n referenceMap = null;\n currentStructures = null;\n}\nconst mult10 = new Array(147); // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n mult10[i] = Number(\"1e\" + Math.floor(45.15 - i * 0.30103));\n}\nconst defaultDecoder = new Decoder({\n useRecords: false\n});\nconst decode = defaultDecoder.decode;\n\n/**\n * @internal\n * @param abi\n * @param feature\n */\nfunction matchesAbiInterface(abi, feature) {\n // returns true if all the functions in `interfaceToMatch` are found in `contract` (removing any duplicates)\n return hasMatchingAbi(abi, feature.abis);\n}\n\n/**\n * @internal\n * @param contractWrapper\n * @param abi\n * @returns\n */\nfunction matchesPrebuiltAbi(contractWrapper, abi) {\n return hasMatchingAbi(contractWrapper.abi, [abi]);\n}\n\n/**\n * @internal\n * @param contractAbi\n * @param featureAbis\n * @returns\n */\nfunction hasMatchingAbi(contractAbi, featureAbis) {\n const contractFn = extractFunctionsFromAbi(contractAbi);\n const interfaceFn = featureAbis.flatMap(i => extractFunctionsFromAbi(i));\n // match every function and their arguments\n const intersection = contractFn.filter(fn => {\n const match = interfaceFn.find(iFn => iFn.name === fn.name && iFn.inputs.length === fn.inputs.length && iFn.inputs.every((i, index) => {\n if (i.type === \"tuple\" || i.type === \"tuple[]\") {\n // check that all properties in the tuple are the same type\n return i.type === fn.inputs[index].type && i.components?.every((c, cIndex) => {\n return c.type === fn.inputs[index].components?.[cIndex]?.type;\n });\n }\n return i.type === fn.inputs[index].type;\n }));\n return match !== undefined;\n });\n return intersection.length === interfaceFn.length;\n}\n\n/**\n * @internal\n */\nasync function extractConstructorParams(predeployMetadataUri, storage) {\n const meta = await fetchPreDeployMetadata(predeployMetadataUri, storage);\n return extractConstructorParamsFromAbi(meta.abi);\n}\n\n/**\n * @internal\n * @param predeployMetadataUri\n * @param storage\n */\nasync function extractFunctions(predeployMetadataUri, storage) {\n const metadata = await fetchPreDeployMetadata(predeployMetadataUri, storage);\n return extractFunctionsFromAbi(metadata.abi, metadata.metadata);\n}\n\n/**\n * @internal\n * @param name\n * @param metadata\n * @param type\n */\nfunction extractCommentFromMetadata(name, metadata, type) {\n return metadata?.output?.userdoc?.[type]?.[Object.keys(metadata?.output?.userdoc[type] || {}).find(fn => fn.includes(name || \"unknown\")) || \"\"]?.notice || metadata?.output?.devdoc?.[type]?.[Object.keys(metadata?.output?.devdoc[type] || {}).find(fn => fn.includes(name || \"unknown\")) || \"\"]?.details;\n}\n\n/**\n *\n * @param abi\n * @returns\n * @internal\n */\nfunction extractConstructorParamsFromAbi(abi) {\n for (const input of abi) {\n if (input.type === \"constructor\") {\n return input.inputs || [];\n }\n }\n return [];\n}\n\n/**\n *\n * @param abi\n * @param functionName\n * @returns\n * @internal\n */\nfunction extractFunctionParamsFromAbi(abi, functionName) {\n for (const input of abi) {\n if (input.type === \"function\" && input.name === functionName) {\n return input.inputs || [];\n }\n }\n return [];\n}\n\n/**\n * @internal\n * @param abi\n * @param metadata\n */\nfunction extractFunctionsFromAbi(abi, metadata) {\n const functions = (abi || []).filter(el => el.type === \"function\");\n const parsed = [];\n for (const f of functions) {\n const doc = extractCommentFromMetadata(f.name, metadata, \"methods\");\n const args = f.inputs?.map(i => `${i.name || \"key\"}: ${toJSType(i)}`)?.join(\", \") || \"\";\n const fargs = args ? `, ${args}` : \"\";\n const out = f.outputs?.map(o => toJSType(o, true))?.join(\", \");\n const promise = out ? `: Promise<${out}>` : `: Promise`;\n const signature = `contract.call(\"${f.name}\"${fargs})${promise}`;\n parsed.push({\n inputs: f.inputs || [],\n outputs: f.outputs || [],\n name: f.name || \"unknown\",\n signature,\n stateMutability: f.stateMutability || \"\",\n comment: doc\n });\n }\n return parsed;\n}\n\n/**\n * @internal\n * @param abi\n * @param metadata\n */\nfunction extractEventsFromAbi(abi, metadata) {\n const events = (abi || []).filter(el => el.type === \"event\");\n const parsed = [];\n for (const e of events) {\n const doc = extractCommentFromMetadata(e.name, metadata, \"events\");\n parsed.push({\n inputs: e.inputs || [],\n outputs: e.outputs || [],\n name: e.name || \"unknown\",\n comment: doc\n });\n }\n return parsed;\n}\nfunction toJSType(contractType) {\n let isReturnType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let withName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let jsType = contractType.type;\n let isArray = false;\n if (jsType.endsWith(\"[]\")) {\n isArray = true;\n jsType = jsType.slice(0, -2);\n }\n if (jsType.startsWith(\"bytes\")) {\n jsType = \"BytesLike\";\n }\n if (jsType.startsWith(\"uint\") || jsType.startsWith(\"int\")) {\n jsType = isReturnType ? \"BigNumber\" : \"BigNumberish\";\n }\n if (jsType.startsWith(\"bool\")) {\n jsType = \"boolean\";\n }\n if (jsType === \"address\") {\n jsType = \"string\";\n }\n if (jsType === \"tuple\") {\n if (contractType.components) {\n jsType = `{ ${contractType.components.map(a => toJSType(a, false, true)).join(\", \")} }`;\n }\n }\n if (isArray) {\n jsType += \"[]\";\n }\n if (withName) {\n jsType = `${contractType.name}: ${jsType}`;\n }\n return jsType;\n}\n\n/**\n * @internal\n * @param bytecode\n */\nfunction extractMinimalProxyImplementationAddress(bytecode) {\n // EIP-1167 clone minimal proxy - https://eips.ethereum.org/EIPS/eip-1167\n if (bytecode.startsWith(\"0x363d3d373d3d3d363d73\")) {\n const implementationAddress = bytecode.slice(22, 62);\n return `0x${implementationAddress}`;\n }\n\n // Minimal Proxy with receive() from 0xSplits - https://github.com/0xSplits/splits-contracts/blob/c7b741926ec9746182d0d1e2c4c2046102e5d337/contracts/libraries/Clones.sol\n if (bytecode.startsWith(\"0x36603057343d5230\")) {\n // +40 = size of addr\n const implementationAddress = bytecode.slice(122, 122 + 40);\n return `0x${implementationAddress}`;\n }\n\n // 0age's minimal proxy - https://medium.com/coinmonks/the-more-minimal-proxy-5756ae08ee48\n if (bytecode.startsWith(\"0x3d3d3d3d363d3d37363d73\")) {\n // +40 = size of addr\n const implementationAddress = bytecode.slice(24, 24 + 40);\n return `0x${implementationAddress}`;\n }\n\n // vyper's minimal proxy (uniswap v1) - https://etherscan.io/address/0x09cabec1ead1c0ba254b09efb3ee13841712be14#code\n if (bytecode.startsWith(\"0x366000600037611000600036600073\")) {\n const implementationAddress = bytecode.slice(32, 32 + 40);\n return `0x${implementationAddress}`;\n }\n return undefined;\n}\n\n/**\n * @internal\n * @param address\n * @param provider\n */\nasync function resolveContractUriFromAddress(address, provider) {\n const bytecode = await provider.getCode(address);\n if (bytecode === \"0x\") {\n const chain = await provider.getNetwork();\n throw new Error(`Contract at ${address} does not exist on chain '${chain.name}' (chainId: ${chain.chainId})`);\n }\n try {\n const implementationAddress = extractMinimalProxyImplementationAddress(bytecode);\n if (implementationAddress) {\n return await resolveContractUriFromAddress(implementationAddress, provider);\n }\n } catch (e) {\n // ignore\n }\n\n // EIP-1967 proxy storage slots - https://eips.ethereum.org/EIPS/eip-1967\n try {\n const proxyStorage = await provider.getStorageAt(address, BigNumber.from(\"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\"));\n const implementationAddress = ethers.utils.hexStripZeros(proxyStorage);\n if (implementationAddress !== \"0x\") {\n return await resolveContractUriFromAddress(implementationAddress, provider);\n }\n } catch (e) {\n // ignore\n }\n // TODO support other types of proxies\n return await extractIPFSHashFromBytecode(bytecode);\n}\n\n/**\n * @internal\n * @param bytecode\n */\nfunction extractIPFSHashFromBytecode(bytecode) {\n const numericBytecode = hexToBytes(bytecode);\n const cborLength = numericBytecode[numericBytecode.length - 2] * 0x100 + numericBytecode[numericBytecode.length - 1];\n const bytecodeBuffer = Uint8Array.from(numericBytecode.slice(numericBytecode.length - 2 - cborLength, -2));\n const cborData = decode(bytecodeBuffer);\n if (\"ipfs\" in cborData && cborData[\"ipfs\"]) {\n try {\n return `ipfs://${bs58.encode(cborData[\"ipfs\"])}`;\n } catch (e) {\n console.warn(\"feature-detection ipfs cbor failed\", e);\n }\n }\n return undefined;\n}\n\n/**\n * @internal\n * @param hex\n */\nfunction hexToBytes(hex) {\n hex = hex.toString(16);\n if (!hex.startsWith(\"0x\")) {\n hex = `0x${hex}`;\n }\n if (!isHexStrict(hex)) {\n throw new Error(`Given value \"${hex}\" is not a valid hex string.`);\n }\n hex = hex.replace(/^0x/i, \"\");\n const bytes = [];\n for (let c = 0; c < hex.length; c += 2) {\n bytes.push(parseInt(hex.slice(c, c + 2), 16));\n }\n return bytes;\n}\n\n/**\n * @internal\n * @param hex\n */\nfunction isHexStrict(hex) {\n return (typeof hex === \"string\" || typeof hex === \"number\") && /^(-)?0x[0-9a-f]*$/i.test(hex.toString());\n}\n\n/**\n * @internal\n * @param publishMetadataUri\n * @param storage\n */\nasync function fetchRawPredeployMetadata(publishMetadataUri, storage) {\n return PreDeployMetadata.parse(JSON.parse(await (await storage.download(publishMetadataUri)).text()));\n}\n\n/**\n * Fetch the metadata coming from CLI, this is before deploying or releasing the contract.\n * @internal\n * @param publishMetadataUri\n * @param storage\n */\nasync function fetchPreDeployMetadata(publishMetadataUri, storage) {\n const rawMeta = await fetchRawPredeployMetadata(publishMetadataUri, storage);\n const deployBytecode = await (await storage.download(rawMeta.bytecodeUri)).text();\n const parsedMeta = await fetchContractMetadata(rawMeta.metadataUri, storage);\n return PreDeployMetadataFetchedSchema.parse({\n ...rawMeta,\n ...parsedMeta,\n bytecode: deployBytecode\n });\n}\n\n/**\n * Fetch and parse the full metadata AFTER creating a release, with all the extra information (version, readme, etc)\n * @internal\n * @param publishMetadataUri\n * @param storage\n */\nasync function fetchExtendedReleaseMetadata(publishMetadataUri, storage) {\n const meta = await (await storage.download(publishMetadataUri)).text();\n return FullPublishMetadataSchemaOutput.parse(JSON.parse(meta));\n}\n\n/**\n * Processes ALL supported features and sets whether the passed in abi supports each individual feature\n * @internal\n * @param abi\n * @param features\n * @returns the nested struct of all features and whether they're detected in the abi\n */\nfunction detectFeatures(abi) {\n let features = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SUPPORTED_FEATURES;\n const results = {};\n for (const featureKey in features) {\n const feature = features[featureKey];\n const enabled = matchesAbiInterface(abi, feature);\n const childResults = detectFeatures(abi, feature.features);\n results[featureKey] = {\n ...feature,\n features: childResults,\n enabled\n };\n }\n return results;\n}\nfunction extractFeatures(input, enabledExtensions) {\n if (!input) {\n return;\n }\n for (const extensionKey in input) {\n const extension = input[extensionKey];\n // if extension is enabled, then add it to enabledFeatures\n if (extension.enabled) {\n enabledExtensions.push(extension);\n }\n // recurse\n extractFeatures(extension.features, enabledExtensions);\n }\n}\n\n/**\n * Return all the detected features in the abi\n * @param abi - parsed array of abi entries\n * @returns array of all detected extensions with full information on each feature\n * @public\n */\nfunction getAllDetectedFeatures(abi) {\n const features = [];\n extractFeatures(detectFeatures(abi), features);\n return features;\n}\n\n/**\n * Return all the detected features names in the abi\n * @param abi - parsed array of abi entries\n * @returns array of all detected features names\n * @public\n */\nfunction getAllDetectedFeatureNames(abi) {\n const features = [];\n extractFeatures(detectFeatures(abi), features);\n return features.map(f => f.name);\n}\n\n/**\n * Checks whether the given ABI supports a given feature\n * @internal\n * @param abi\n * @param featureName\n */\nfunction isFeatureEnabled(abi, featureName) {\n const features = detectFeatures(abi);\n return _featureEnabled(features, featureName);\n}\n\n/**\n * Checks whether the given DetectableFeature is defined\n * @internal\n * @param namespace The namespace to check\n * @param feature The corresponding feature\n */\nfunction assertEnabled(namespace, feature) {\n if (!namespace) {\n throw new ExtensionNotImplementedError(feature);\n }\n return namespace;\n}\n\n/**\n * Type guard for contractWrappers depending on passed feature name\n * @internal\n * @param contractWrapper\n * @param featureName\n */\nfunction detectContractFeature(contractWrapper, featureName) {\n return isFeatureEnabled(AbiSchema.parse(contractWrapper.abi), featureName);\n}\n\n/**\n * Searches the feature map for featureName and returns whether its enabled\n * @internal\n * @param features\n * @param featureName\n */\nfunction _featureEnabled(features, featureName) {\n const keys = Object.keys(features);\n if (!keys.includes(featureName)) {\n let found = false;\n for (const key of keys) {\n const f = features[key];\n found = _featureEnabled(f.features, featureName);\n if (found) {\n break;\n }\n }\n return found;\n }\n const feature = features[featureName];\n return feature.enabled;\n}\n\n/**\n * @internal\n * @param contractWrapper\n * @param functionName\n */\nfunction hasFunction(functionName, contractWrapper) {\n return functionName in contractWrapper.readContract.functions;\n}\n\nlet ListingType;\n(function (ListingType) {\n ListingType[ListingType[\"Direct\"] = 0] = \"Direct\";\n ListingType[ListingType[\"Auction\"] = 1] = \"Auction\";\n})(ListingType || (ListingType = {}));\n\nlet Status;\n(function (Status) {\n Status[Status[\"UNSET\"] = 0] = \"UNSET\";\n Status[Status[\"Created\"] = 1] = \"Created\";\n Status[Status[\"Completed\"] = 2] = \"Completed\";\n Status[Status[\"Cancelled\"] = 3] = \"Cancelled\";\n Status[Status[\"Active\"] = 4] = \"Active\";\n Status[Status[\"Expired\"] = 5] = \"Expired\";\n})(Status || (Status = {}));\n\nlet ProposalState;\n(function (ProposalState) {\n ProposalState[ProposalState[\"Pending\"] = 0] = \"Pending\";\n ProposalState[ProposalState[\"Active\"] = 1] = \"Active\";\n ProposalState[ProposalState[\"Canceled\"] = 2] = \"Canceled\";\n ProposalState[ProposalState[\"Defeated\"] = 3] = \"Defeated\";\n ProposalState[ProposalState[\"Succeeded\"] = 4] = \"Succeeded\";\n ProposalState[ProposalState[\"Queued\"] = 5] = \"Queued\";\n ProposalState[ProposalState[\"Expired\"] = 6] = \"Expired\";\n ProposalState[ProposalState[\"Executed\"] = 7] = \"Executed\";\n})(ProposalState || (ProposalState = {}));\n\nlet VoteType;\n(function (VoteType) {\n VoteType[VoteType[\"Against\"] = 0] = \"Against\";\n VoteType[VoteType[\"For\"] = 1] = \"For\";\n VoteType[VoteType[\"Abstain\"] = 2] = \"Abstain\";\n})(VoteType || (VoteType = {}));\n\nlet ClaimEligibility;\n(function (ClaimEligibility) {\n ClaimEligibility[\"NotEnoughSupply\"] = \"There is not enough supply to claim.\";\n ClaimEligibility[\"AddressNotAllowed\"] = \"This address is not on the allowlist.\";\n ClaimEligibility[\"WaitBeforeNextClaimTransaction\"] = \"Not enough time since last claim transaction. Please wait.\";\n ClaimEligibility[\"AlreadyClaimed\"] = \"You have already claimed the token.\";\n ClaimEligibility[\"NotEnoughTokens\"] = \"There are not enough tokens in the wallet to pay for the claim.\";\n ClaimEligibility[\"NoActiveClaimPhase\"] = \"There is no active claim phase at the moment. Please check back in later.\";\n ClaimEligibility[\"NoClaimConditionSet\"] = \"There is no claim condition set.\";\n ClaimEligibility[\"NoWallet\"] = \"No wallet connected.\";\n ClaimEligibility[\"Unknown\"] = \"No claim conditions found.\";\n})(ClaimEligibility || (ClaimEligibility = {}));\n\n/**\n * Estimates the gas cost of Contract calls\n * @public\n */\nclass GasCostEstimator {\n constructor(contractWrapper) {\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Estimates the cost of gas in native token of the current chain\n * Pass in the same parameters as the contract's function.\n * @remarks Estimate the cost of gas in native token of the current chain\n * @example\n * ```javascript\n * const costOfClaim = await nftDrop?.estimator.gasCostOf(\"claim\", [\n * \"0x...\", // receiver\n * 1, // quantity\n * \"0x...\", // currency\n * 1, // price per token\n * [], // proofs\n * 1, // proof max quantity per transaction\n * ]);\n * ```\n * @returns the estimated price in native currency (ETH, MATIC, etc) of calling this function\n * @public\n */\n async gasCostOf(fn, args) {\n const price = await this.contractWrapper.getPreferredGasPrice();\n const gasUnits = await this.contractWrapper.estimateGas(fn, args);\n return ethers.utils.formatEther(gasUnits.mul(price));\n }\n\n /**\n * Estimates the gas limit of a transaction\n * Pass in the same parameters as the contract's function.\n * @remarks Estimates the gas limit of a transaction\n * @example\n * ```javascript\n * const gasLimitOfClaim = await nftDrop?.estimator.gasLimitOf(\"claim\", [\n * \"0x...\", // receiver\n * 1, // quantity\n * \"0x...\", // currency\n * 1, // price per token\n * [], // proofs\n * 1, // proof max quantity per transaction\n * ]);\n * ```\n * @returns the estimated gas limit of the transaction\n * @public\n */\n async gasLimitOf(fn, args) {\n return this.contractWrapper.estimateGas(fn, args);\n }\n\n /**\n * Returns the current gas price in gwei\n * @remarks Get the current gas price in gwei\n * @example\n * ```javascript\n * const gasCostInGwei = await contract.estimator.currentGasPriceInGwei();\n * ```\n * @returns the current gas price in gwei\n * @public\n */\n async currentGasPriceInGwei() {\n const price = await this.contractWrapper.getProvider().getGasPrice();\n return ethers.utils.formatUnits(price, \"gwei\");\n }\n}\n\n/**\n * @internal\n * Represents a transaction to be executed and can be customized.\n */\nclass TransactionTask {\n static make(taskArgs) {\n return new TransactionTask(taskArgs);\n }\n constructor(taskArgs) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"functionName\", void 0);\n _defineProperty(this, \"args\", void 0);\n _defineProperty(this, \"overrides\", void 0);\n _defineProperty(this, \"encoder\", void 0);\n _defineProperty(this, \"estimator\", void 0);\n this.contractWrapper = taskArgs.contractWrapper;\n this.functionName = taskArgs.functionName;\n this.args = taskArgs.args || [];\n this.overrides = taskArgs.overrides;\n this.encoder = new ContractEncoder(this.contractWrapper);\n this.estimator = new GasCostEstimator(this.contractWrapper);\n }\n\n // ////////////// Overrides ////////////////\n\n /**\n * Override the gas limit for this transaction.\n * @param gasLimit\n */\n overrideGasLimit(gasLimit) {\n this.overrides = {\n ...this.overrides,\n gasLimit\n };\n return this;\n }\n\n /**\n * Override the gas price for this transaction.\n * @param gasPrice\n */\n overrideGasPrice(gasPrice) {\n this.overrides = {\n ...this.overrides,\n gasPrice\n };\n return this;\n }\n\n /**\n * Override the nonce for this transaction.\n * @param nonce\n */\n overrideNonce(nonce) {\n this.overrides = {\n ...this.overrides,\n nonce\n };\n return this;\n }\n\n /**\n * Override the value sent with this transaction.\n * @param value\n */\n overrideValue(value) {\n this.overrides = {\n ...this.overrides,\n value\n };\n return this;\n }\n\n // ////////////// Estimates ////////////////\n\n /**\n * Returns the gas limit that this transaction would consume if executed.\n * @returns the gas limit in gas units\n */\n async estimateGasLimit() {\n return await this.estimator.gasLimitOf(this.functionName, [...this.args, this.overrides || {}]);\n }\n\n /**\n * Returns the total gas cost of this transaction if executed.\n * @returns the gas cost in ether\n */\n async estimateGasCostInEther() {\n return await this.estimator.gasCostOf(this.functionName, [...this.args, this.overrides || {}]);\n }\n\n // ////////////// Actions ////////////////\n\n /**\n * Returns the encoded function data of this transaction if executed.\n */\n async encodeFunctionData() {\n return this.encoder.encode(this.functionName, this.args);\n }\n\n /**\n * Submits this transaction to the network. Does not wait for the transaction to be mined.\n * To wait for the transaction to be mined, you can call `.wait()` on the result of this function.\n */\n async submit() {\n return await this.contractWrapper.sendTransactionByFunction(this.functionName, this.args, this.overrides || {});\n }\n\n /**\n * Submits this transaction to the network and waits for it to be mined.\n */\n async execute() {\n const receipt = await this.contractWrapper.sendTransaction(this.functionName, this.args, this.overrides || {});\n return {\n receipt\n };\n }\n}\n\n/**\n * Manages claim conditions for NFT Drop contracts\n * @public\n */\nclass DropClaimConditions {\n constructor(contractWrapper, metadata, storage) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"metadata\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.storage = storage;\n this.contractWrapper = contractWrapper;\n this.metadata = metadata;\n }\n\n /** ***************************************\n * READ FUNCTIONS\n *****************************************/\n\n /**\n * Get the currently active claim condition\n *\n * @returns the claim condition metadata\n */\n async getActive(options) {\n const cc = await this.get();\n const metadata = await this.metadata.get();\n return await transformResultToClaimCondition(cc, await this.getTokenDecimals(), this.contractWrapper.getProvider(), metadata.merkle || {}, this.storage, options?.withAllowList || false);\n }\n async get(conditionId) {\n if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n const contractModel = await this.contractWrapper.readContract.claimCondition();\n return legacyContractModelToAbstract(contractModel);\n } else if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n const id = conditionId !== undefined ? conditionId : await this.contractWrapper.readContract.getActiveClaimConditionId();\n const contractModel = await this.contractWrapper.readContract.getClaimConditionById(id);\n return legacyContractModelToAbstract(contractModel);\n } else if (this.isNewSinglePhaseDrop(this.contractWrapper)) {\n const contractModel = await this.contractWrapper.readContract.claimCondition();\n return newContractModelToAbstract(contractModel);\n } else if (this.isNewMultiphaseDrop(this.contractWrapper)) {\n const id = conditionId !== undefined ? conditionId : await this.contractWrapper.readContract.getActiveClaimConditionId();\n const contractModel = await this.contractWrapper.readContract.getClaimConditionById(id);\n return newContractModelToAbstract(contractModel);\n } else {\n throw new Error(\"Contract does not support claim conditions\");\n }\n }\n\n /**\n * Get all the claim conditions\n *\n * @returns the claim conditions metadata\n */\n async getAll(options) {\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper) || this.isNewMultiphaseDrop(this.contractWrapper)) {\n const claimCondition = await this.contractWrapper.readContract.claimCondition();\n const startId = claimCondition.currentStartId.toNumber();\n const count = claimCondition.count.toNumber();\n const conditions = [];\n for (let i = startId; i < startId + count; i++) {\n conditions.push(await this.get(i));\n }\n const metadata = await this.metadata.get();\n const decimals = await this.getTokenDecimals();\n return Promise.all(conditions.map(c => transformResultToClaimCondition(c, decimals, this.contractWrapper.getProvider(), metadata.merkle, this.storage, options?.withAllowList || false)));\n } else {\n return [await this.getActive(options)];\n }\n }\n\n /**\n * Can Claim\n *\n * @remarks Check if the drop can currently be claimed.\n *\n * @example\n * ```javascript\n * // Quantity of tokens to check claimability of\n * const quantity = 1;\n * const canClaim = await contract.canClaim(quantity);\n * ```\n */\n async canClaim(quantity, addressToCheck) {\n // TODO switch to use verifyClaim\n return (await this.getClaimIneligibilityReasons(quantity, addressToCheck)).length === 0;\n }\n\n /**\n * For any claim conditions that a particular wallet is violating,\n * this function returns human readable information about the\n * breaks in the condition that can be used to inform the user.\n *\n * @param quantity - The desired quantity that would be claimed.\n * @param addressToCheck - The wallet address, defaults to the connected wallet.\n *\n */\n async getClaimIneligibilityReasons(quantity, addressToCheck) {\n const reasons = [];\n let activeConditionIndex;\n let claimCondition;\n const decimals = await this.getTokenDecimals();\n const quantityWithDecimals = ethers.utils.parseUnits(AmountSchema.parse(quantity), decimals);\n if (addressToCheck === undefined) {\n try {\n addressToCheck = await this.contractWrapper.getSignerAddress();\n } catch (err) {\n console.warn(\"failed to get signer address\", err);\n }\n }\n\n // if we have been unable to get a signer address, we can't check eligibility, so return a NoWallet error reason\n if (!addressToCheck) {\n return [ClaimEligibility.NoWallet];\n }\n try {\n claimCondition = await this.getActive();\n } catch (err) {\n if (includesErrorMessage(err, \"!CONDITION\") || includesErrorMessage(err, \"no active mint condition\")) {\n reasons.push(ClaimEligibility.NoClaimConditionSet);\n return reasons;\n }\n console.warn(\"failed to get active claim condition\", err);\n reasons.push(ClaimEligibility.Unknown);\n return reasons;\n }\n if (claimCondition.availableSupply !== \"unlimited\") {\n const supplyWithDecimals = ethers.utils.parseUnits(claimCondition.availableSupply, decimals);\n if (supplyWithDecimals.lt(quantityWithDecimals)) {\n reasons.push(ClaimEligibility.NotEnoughSupply);\n }\n }\n\n // check for merkle root inclusion\n const merkleRootArray = ethers.utils.stripZeros(claimCondition.merkleRootHash);\n const hasAllowList = merkleRootArray.length > 0;\n let allowListEntry = null;\n if (hasAllowList) {\n allowListEntry = await this.getClaimerProofs(addressToCheck);\n if (!allowListEntry && (this.isLegacySinglePhaseDrop(this.contractWrapper) || this.isLegacyMultiPhaseDrop(this.contractWrapper))) {\n // exclusive allowlist behavior\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n if (allowListEntry) {\n try {\n const claimVerification = await this.prepareClaim(quantity, false, decimals, addressToCheck);\n let validMerkleProof;\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n activeConditionIndex = await this.contractWrapper.readContract.getActiveClaimConditionId();\n // legacy verifyClaimerMerkleProofs function\n [validMerkleProof] = await this.contractWrapper.readContract.verifyClaimMerkleProof(activeConditionIndex, addressToCheck, quantity, claimVerification.proofs, claimVerification.maxClaimable);\n if (!validMerkleProof) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n } else if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n [validMerkleProof] = await this.contractWrapper.readContract.verifyClaimMerkleProof(addressToCheck, quantity, {\n proof: claimVerification.proofs,\n maxQuantityInAllowlist: claimVerification.maxClaimable\n });\n if (!validMerkleProof) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n } else if (this.isNewSinglePhaseDrop(this.contractWrapper)) {\n await this.contractWrapper.readContract.verifyClaim(addressToCheck, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n quantityLimitPerWallet: claimVerification.maxClaimable,\n currency: claimVerification.currencyAddressInProof,\n pricePerToken: claimVerification.priceInProof\n });\n if (convertQuantityToBigNumber(claimCondition.maxClaimablePerWallet, decimals).eq(0) && claimVerification.maxClaimable === ethers.constants.MaxUint256 || claimVerification.maxClaimable === BigNumber.from(0)) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n } else if (this.isNewMultiphaseDrop(this.contractWrapper)) {\n activeConditionIndex = await this.contractWrapper.readContract.getActiveClaimConditionId();\n await this.contractWrapper.readContract.verifyClaim(activeConditionIndex, addressToCheck, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n quantityLimitPerWallet: claimVerification.maxClaimable,\n currency: claimVerification.currencyAddressInProof,\n pricePerToken: claimVerification.priceInProof\n });\n if (convertQuantityToBigNumber(claimCondition.maxClaimablePerWallet, decimals).eq(0) && claimVerification.maxClaimable === ethers.constants.MaxUint256 || claimVerification.maxClaimable === BigNumber.from(0)) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n }\n } catch (e) {\n console.warn(\"Merkle proof verification failed:\", \"reason\" in e ? e.reason : e);\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n }\n }\n\n // TODO (cc) check for max claimable per wallet and how much each wallet has claimed\n if (this.isNewSinglePhaseDrop(this.contractWrapper) || this.isNewMultiphaseDrop(this.contractWrapper)) {\n if (!hasAllowList || hasAllowList && !allowListEntry) {\n if (convertQuantityToBigNumber(claimCondition.maxClaimablePerWallet, decimals).eq(0)) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n }\n }\n\n // check for claim timestamp between claims (ONLY FOR LEGACY)\n if (this.isLegacySinglePhaseDrop(this.contractWrapper) || this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n let [lastClaimedTimestamp, timestampForNextClaim] = [BigNumber.from(0), BigNumber.from(0)];\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n activeConditionIndex = await this.contractWrapper.readContract.getActiveClaimConditionId();\n [lastClaimedTimestamp, timestampForNextClaim] = await this.contractWrapper.readContract.getClaimTimestamp(activeConditionIndex, addressToCheck);\n } else if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n // check for claim timestamp between claims\n [lastClaimedTimestamp, timestampForNextClaim] = await this.contractWrapper.readContract.getClaimTimestamp(addressToCheck);\n }\n const now = BigNumber.from(Date.now()).div(1000);\n if (lastClaimedTimestamp.gt(0) && now.lt(timestampForNextClaim)) {\n // contract will return MaxUint256 if user has already claimed and cannot claim again\n if (timestampForNextClaim.eq(constants.MaxUint256)) {\n reasons.push(ClaimEligibility.AlreadyClaimed);\n } else {\n reasons.push(ClaimEligibility.WaitBeforeNextClaimTransaction);\n }\n }\n }\n\n // if not within a browser conetext, check for wallet balance.\n // In browser context, let the wallet do that job\n if (claimCondition.price.gt(0) && isNode()) {\n const totalPrice = claimCondition.price.mul(BigNumber.from(quantity));\n const provider = this.contractWrapper.getProvider();\n if (isNativeToken(claimCondition.currencyAddress)) {\n const balance = await provider.getBalance(addressToCheck);\n if (balance.lt(totalPrice)) {\n reasons.push(ClaimEligibility.NotEnoughTokens);\n }\n } else {\n const erc20 = new ContractWrapper(provider, claimCondition.currencyAddress, ERC20Abi, {});\n const balance = await erc20.readContract.balanceOf(addressToCheck);\n if (balance.lt(totalPrice)) {\n reasons.push(ClaimEligibility.NotEnoughTokens);\n }\n }\n }\n return reasons;\n }\n\n /**\n * Returns allow list information and merkle proofs for the given address.\n * @param claimerAddress - the claimer address\n * @param claimConditionId - optional the claim condition id to get the proofs for\n */\n async getClaimerProofs(claimerAddress, claimConditionId) {\n const claimCondition = await this.get(claimConditionId);\n const merkleRoot = claimCondition.merkleRoot;\n const merkleRootArray = ethers.utils.stripZeros(merkleRoot);\n if (merkleRootArray.length > 0) {\n const metadata = await this.metadata.get();\n return await fetchSnapshotEntryForAddress(claimerAddress, merkleRoot.toString(), metadata.merkle, this.contractWrapper.getProvider(), this.storage, this.getSnapshotFormatVersion());\n } else {\n return null;\n }\n }\n\n /** ***************************************\n * WRITE FUNCTIONS\n *****************************************/\n\n /**\n * Set public mint conditions\n *\n * @remarks Sets the public mint conditions that need to be fullfiled by users to claim NFTs.\n *\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n *\n * // Optionally specify addresses that can claim\n * const snapshots = ['0x...', '0x...']\n *\n * // Or alternatively, you can pass snapshots with the max number of NFTs each address can claim\n * // const snapshots = [{ address: '0x...', maxClaimable: 1 }, { address: '0x...', maxClaimable: 2 }]\n *\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: snapshots, // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n *\n * await dropContract.claimConditions.set(claimConditions);\n * ```\n *\n * @param claimConditionInputs - The claim conditions\n * @param resetClaimEligibilityForAll - Whether to reset the state of who already claimed NFTs previously\n */\n async set(claimConditionInputs) {\n let resetClaimEligibilityForAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let claimConditionsProcessed = claimConditionInputs;\n if (this.isLegacySinglePhaseDrop(this.contractWrapper) || this.isNewSinglePhaseDrop(this.contractWrapper)) {\n resetClaimEligibilityForAll = true;\n if (claimConditionInputs.length === 0) {\n claimConditionsProcessed = [{\n startTime: new Date(0),\n currencyAddress: ethers.constants.AddressZero,\n price: 0,\n maxClaimableSupply: 0,\n maxClaimablePerWallet: 0,\n waitInSeconds: 0,\n merkleRootHash: utils.hexZeroPad([0], 32),\n snapshot: []\n }];\n } else if (claimConditionInputs.length > 1) {\n throw new Error(\"Single phase drop contract cannot have multiple claim conditions, only one is allowed\");\n }\n }\n\n // if using new snapshot format, make sure that maxClaimablePerWallet is set if allowlist is set as well\n if (this.isNewSinglePhaseDrop(this.contractWrapper) || this.isNewMultiphaseDrop(this.contractWrapper)) {\n claimConditionsProcessed.forEach(cc => {\n if (cc.snapshot && cc.snapshot.length > 0 && (cc.maxClaimablePerWallet === undefined || cc.maxClaimablePerWallet === \"unlimited\")) {\n throw new Error(\"maxClaimablePerWallet must be set to a specific value when an allowlist is set.\\n\" + \"Example: Set it to 0 to only allow addresses in the allowlist to claim the amount specified in the allowlist.\\n\" + \"contract.claimConditions.set([{ snapshot: [{ address: '0x...', maxClaimable: 1 }], maxClaimablePerWallet: 0 }])\");\n }\n if (cc.snapshot && cc.snapshot.length > 0 && cc.maxClaimablePerWallet?.toString() === \"0\" && cc.snapshot.map(s => {\n if (typeof s === \"string\") {\n return 0;\n } else {\n return Number(s.maxClaimable?.toString() || 0);\n }\n }).reduce((acc, current) => {\n return acc + current;\n }, 0) === 0) {\n throw new Error(\"maxClaimablePerWallet is set to 0, and all addresses in the allowlist have max claimable 0. This means that no one can claim.\");\n }\n });\n }\n\n // process inputs\n const {\n snapshotInfos,\n sortedConditions\n } = await processClaimConditionInputs(claimConditionsProcessed, await this.getTokenDecimals(), this.contractWrapper.getProvider(), this.storage, this.getSnapshotFormatVersion());\n const merkleInfo = {};\n snapshotInfos.forEach(s => {\n merkleInfo[s.merkleRoot] = s.snapshotUri;\n });\n const metadata = await this.metadata.get();\n const encoded = [];\n\n // upload new merkle roots to snapshot URIs if updated\n if (!deepEqual(metadata.merkle, merkleInfo)) {\n const mergedMetadata = this.metadata.parseInputMetadata({\n ...metadata,\n merkle: merkleInfo\n });\n // using internal method to just upload, avoids one contract call\n const contractURI = await this.metadata._parseAndUploadMetadata(mergedMetadata);\n\n // TODO (cc) we could write the merkle tree info on the claim condition metadata instead\n // TODO (cc) but we still need to maintain the behavior here for older contracts\n if (hasFunction(\"setContractURI\", this.contractWrapper)) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"setContractURI\", [contractURI]));\n } else {\n throw new Error(\"Setting a merkle root requires implementing ContractMetadata in your contract to support storing a merkle root.\");\n }\n }\n const cw = this.contractWrapper;\n if (this.isLegacySinglePhaseDrop(cw)) {\n encoded.push(cw.readContract.interface.encodeFunctionData(\"setClaimConditions\", [abstractContractModelToLegacy(sortedConditions[0]), resetClaimEligibilityForAll]));\n } else if (this.isLegacyMultiPhaseDrop(cw)) {\n encoded.push(cw.readContract.interface.encodeFunctionData(\"setClaimConditions\", [sortedConditions.map(abstractContractModelToLegacy), resetClaimEligibilityForAll]));\n } else if (this.isNewSinglePhaseDrop(cw)) {\n encoded.push(cw.readContract.interface.encodeFunctionData(\"setClaimConditions\", [abstractContractModelToNew(sortedConditions[0]), resetClaimEligibilityForAll]));\n } else if (this.isNewMultiphaseDrop(cw)) {\n encoded.push(cw.readContract.interface.encodeFunctionData(\"setClaimConditions\", [sortedConditions.map(abstractContractModelToNew), resetClaimEligibilityForAll]));\n } else {\n throw new Error(\"Contract does not support claim conditions\");\n }\n return {\n receipt: await this.contractWrapper.multiCall(encoded)\n };\n }\n\n /**\n * Update a single claim condition with new data.\n *\n * @param index - the index of the claim condition to update, as given by the index from the result of `getAll()`\n * @param claimConditionInput - the new data to update, previous data will be retained\n */\n async update(index, claimConditionInput) {\n const existingConditions = await this.getAll();\n const newConditionInputs = await updateExistingClaimConditions(index, claimConditionInput, existingConditions);\n return await this.set(newConditionInputs);\n }\n\n /** ***************************************\n * PRIVATE FUNCTIONS\n *****************************************/\n\n async getTokenDecimals() {\n if (detectContractFeature(this.contractWrapper, \"ERC20\")) {\n return this.contractWrapper.readContract.decimals();\n } else {\n return Promise.resolve(0);\n }\n }\n\n /**\n * Returns proofs and the overrides required for the transaction.\n *\n * @returns - `overrides` and `proofs` as an object.\n * @internal\n */\n async prepareClaim(quantity, checkERC20Allowance) {\n let decimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let address = arguments.length > 3 ? arguments[3] : undefined;\n const addressToClaim = address ? address : await this.contractWrapper.getSignerAddress();\n return prepareClaim(addressToClaim, quantity, await this.getActive(), async () => (await this.metadata.get()).merkle, decimals, this.contractWrapper, this.storage, checkERC20Allowance, this.getSnapshotFormatVersion());\n }\n async getClaimArguments(destinationAddress, quantity, claimVerification) {\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n return [destinationAddress, quantity, claimVerification.currencyAddress, claimVerification.price, claimVerification.proofs, claimVerification.maxClaimable];\n } else if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n return [destinationAddress, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n maxQuantityInAllowlist: claimVerification.maxClaimable\n }, ethers.utils.toUtf8Bytes(\"\")];\n }\n return [destinationAddress, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n quantityLimitPerWallet: claimVerification.maxClaimable,\n pricePerToken: claimVerification.priceInProof,\n currency: claimVerification.currencyAddressInProof\n }, ethers.utils.toUtf8Bytes(\"\")];\n }\n\n /**\n * Construct a claim transaction without executing it.\n * This is useful for estimating the gas cost of a claim transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param destinationAddress\n * @param quantity\n * @param options\n */\n async getClaimTransaction(destinationAddress, quantity, options) {\n if (options?.pricePerToken) {\n throw new Error(\"Price per token is be set via claim conditions by calling `contract.erc721.claimConditions.set()`\");\n }\n const claimVerification = await this.prepareClaim(quantity, options?.checkERC20Allowance === undefined ? true : options.checkERC20Allowance, await this.getTokenDecimals());\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"claim\",\n args: await this.getClaimArguments(destinationAddress, quantity, claimVerification),\n overrides: claimVerification.overrides\n });\n }\n isNewSinglePhaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC721ClaimConditionsV2\") || detectContractFeature(contractWrapper, \"ERC20ClaimConditionsV2\");\n }\n isNewMultiphaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC721ClaimPhasesV2\") || detectContractFeature(contractWrapper, \"ERC20ClaimPhasesV2\");\n }\n isLegacySinglePhaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC721ClaimConditionsV1\") || detectContractFeature(contractWrapper, \"ERC20ClaimConditionsV1\");\n }\n isLegacyMultiPhaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC721ClaimPhasesV1\") || detectContractFeature(contractWrapper, \"ERC20ClaimPhasesV1\");\n }\n getSnapshotFormatVersion() {\n return this.isLegacyMultiPhaseDrop(this.contractWrapper) || this.isLegacySinglePhaseDrop(this.contractWrapper) ? SnapshotFormatVersion.V1 : SnapshotFormatVersion.V2;\n }\n}\n\n/**\n * Manages claim conditions for Edition Drop contracts\n * @public\n */\nclass DropErc1155ClaimConditions {\n constructor(contractWrapper, metadata, storage) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"metadata\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.storage = storage;\n this.contractWrapper = contractWrapper;\n this.metadata = metadata;\n }\n\n /** ***************************************\n * READ FUNCTIONS\n *****************************************/\n\n /**\n * Get the currently active claim condition\n *\n * @returns the claim condition metadata\n */\n async getActive(tokenId, options) {\n const mc = await this.get(tokenId);\n const metadata = await this.metadata.get();\n return await transformResultToClaimCondition(mc, 0, this.contractWrapper.getProvider(), metadata.merkle, this.storage, options?.withAllowList || false);\n }\n async get(tokenId, conditionId) {\n if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n const contractModel = await this.contractWrapper.readContract.claimCondition(tokenId);\n return legacyContractModelToAbstract(contractModel);\n } else if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n const id = conditionId !== undefined ? conditionId : await this.contractWrapper.readContract.getActiveClaimConditionId(tokenId);\n const contractModel = await this.contractWrapper.readContract.getClaimConditionById(tokenId, id);\n return legacyContractModelToAbstract(contractModel);\n } else if (this.isNewSinglePhaseDrop(this.contractWrapper)) {\n const contractModel = await this.contractWrapper.readContract.claimCondition(tokenId);\n return newContractModelToAbstract(contractModel);\n } else if (this.isNewMultiphaseDrop(this.contractWrapper)) {\n const id = conditionId !== undefined ? conditionId : await this.contractWrapper.readContract.getActiveClaimConditionId(tokenId);\n const contractModel = await this.contractWrapper.readContract.getClaimConditionById(tokenId, id);\n return newContractModelToAbstract(contractModel);\n } else {\n throw new Error(\"Contract does not support claim conditions\");\n }\n }\n\n /**\n * Get all the claim conditions\n *\n * @returns the claim conditions metadata\n */\n async getAll(tokenId, options) {\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper) || this.isNewMultiphaseDrop(this.contractWrapper)) {\n const claimCondition = await this.contractWrapper.readContract.claimCondition(tokenId);\n const startId = claimCondition.currentStartId.toNumber();\n const count = claimCondition.count.toNumber();\n const conditions = [];\n for (let i = startId; i < startId + count; i++) {\n conditions.push(await this.get(tokenId, i));\n }\n const metadata = await this.metadata.get();\n return Promise.all(conditions.map(c => transformResultToClaimCondition(c, 0, this.contractWrapper.getProvider(), metadata.merkle, this.storage, options?.withAllowList || false)));\n } else {\n return [await this.getActive(tokenId, options)];\n }\n }\n\n /**\n * Can Claim\n *\n * @remarks Check if a particular NFT can currently be claimed by a given user.\n *\n * @example\n * ```javascript\n * // Quantity of tokens to check claimability of\n * const quantity = 1;\n * const canClaim = await contract.canClaim(quantity);\n * ```\n */\n async canClaim(tokenId, quantity, addressToCheck) {\n // TODO switch to use verifyClaim\n return (await this.getClaimIneligibilityReasons(tokenId, quantity, addressToCheck)).length === 0;\n }\n\n /**\n * For any claim conditions that a particular wallet is violating,\n * this function returns human-readable information about the\n * breaks in the condition that can be used to inform the user.\n *\n * @param tokenId - the token id to check\n * @param quantity - The desired quantity that would be claimed.\n * @param addressToCheck - The wallet address, defaults to the connected wallet.\n *\n */\n async getClaimIneligibilityReasons(tokenId, quantity, addressToCheck) {\n const reasons = [];\n let activeConditionIndex;\n let claimCondition;\n if (addressToCheck === undefined) {\n try {\n addressToCheck = await this.contractWrapper.getSignerAddress();\n } catch (err) {\n console.warn(\"failed to get signer address\", err);\n }\n }\n\n // if we have been unable to get a signer address, we can't check eligibility, so return a NoWallet error reason\n if (!addressToCheck) {\n return [ClaimEligibility.NoWallet];\n }\n try {\n claimCondition = await this.getActive(tokenId);\n } catch (err) {\n if (includesErrorMessage(err, \"!CONDITION\") || includesErrorMessage(err, \"no active mint condition\")) {\n reasons.push(ClaimEligibility.NoClaimConditionSet);\n return reasons;\n }\n reasons.push(ClaimEligibility.Unknown);\n return reasons;\n }\n if (claimCondition.availableSupply !== \"unlimited\") {\n if (BigNumber.from(claimCondition.availableSupply).lt(quantity)) {\n reasons.push(ClaimEligibility.NotEnoughSupply);\n }\n }\n\n // check for merkle root inclusion\n const merkleRootArray = ethers.utils.stripZeros(claimCondition.merkleRootHash);\n const hasAllowList = merkleRootArray.length > 0;\n let allowListEntry = null;\n if (hasAllowList) {\n allowListEntry = await this.getClaimerProofs(tokenId, addressToCheck);\n if (!allowListEntry && (this.isLegacySinglePhaseDrop(this.contractWrapper) || this.isLegacyMultiPhaseDrop(this.contractWrapper))) {\n // exclusive allowlist behavior\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n if (allowListEntry) {\n try {\n const claimVerification = await this.prepareClaim(tokenId, quantity, false, addressToCheck);\n let validMerkleProof;\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n activeConditionIndex = await this.contractWrapper.readContract.getActiveClaimConditionId(tokenId);\n // legacy verifyClaimerMerkleProofs function\n [validMerkleProof] = await this.contractWrapper.readContract.verifyClaimMerkleProof(activeConditionIndex, addressToCheck, tokenId, quantity, claimVerification.proofs, claimVerification.maxClaimable);\n if (!validMerkleProof) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n } else if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n [validMerkleProof] = await this.contractWrapper.readContract.verifyClaimMerkleProof(tokenId, addressToCheck, quantity, {\n proof: claimVerification.proofs,\n maxQuantityInAllowlist: claimVerification.maxClaimable\n });\n if (!validMerkleProof) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n } else if (this.isNewSinglePhaseDrop(this.contractWrapper)) {\n await this.contractWrapper.readContract.verifyClaim(tokenId, addressToCheck, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n quantityLimitPerWallet: claimVerification.maxClaimable,\n currency: claimVerification.currencyAddressInProof,\n pricePerToken: claimVerification.priceInProof\n });\n // TODO (cc) in new override format, anyone can claim (no allow list restriction)\n // TODO (cc) instead check if maxClaimablePerWallet is 0 and this address has no overrides\n // TODO (cc) meaning this address is not allowed to claim\n if (claimCondition.maxClaimablePerWallet === \"0\" && claimVerification.maxClaimable === ethers.constants.MaxUint256 || claimVerification.maxClaimable === BigNumber.from(0)) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n } else if (this.isNewMultiphaseDrop(this.contractWrapper)) {\n activeConditionIndex = await this.contractWrapper.readContract.getActiveClaimConditionId(tokenId);\n await this.contractWrapper.readContract.verifyClaim(activeConditionIndex, addressToCheck, tokenId, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n quantityLimitPerWallet: claimVerification.maxClaimable,\n currency: claimVerification.currencyAddressInProof,\n pricePerToken: claimVerification.priceInProof\n });\n if (claimCondition.maxClaimablePerWallet === \"0\" && claimVerification.maxClaimable === ethers.constants.MaxUint256 || claimVerification.maxClaimable === BigNumber.from(0)) {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n }\n } catch (e) {\n console.warn(\"Merkle proof verification failed:\", \"reason\" in e ? e.reason : e);\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n }\n }\n\n // TODO (cc) check for max claimable per wallet and how much each wallet has claimed\n if (this.isNewSinglePhaseDrop(this.contractWrapper) || this.isNewMultiphaseDrop(this.contractWrapper)) {\n if (!hasAllowList || hasAllowList && !allowListEntry) {\n if (claimCondition.maxClaimablePerWallet === \"0\") {\n reasons.push(ClaimEligibility.AddressNotAllowed);\n return reasons;\n }\n }\n }\n\n // check for claim timestamp between claims\n let [lastClaimedTimestamp, timestampForNextClaim] = [BigNumber.from(0), BigNumber.from(0)];\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n activeConditionIndex = await this.contractWrapper.readContract.getActiveClaimConditionId(tokenId);\n [lastClaimedTimestamp, timestampForNextClaim] = await this.contractWrapper.readContract.getClaimTimestamp(tokenId, activeConditionIndex, addressToCheck);\n } else if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n [lastClaimedTimestamp, timestampForNextClaim] = await this.contractWrapper.readContract.getClaimTimestamp(tokenId, addressToCheck);\n }\n const now = BigNumber.from(Date.now()).div(1000);\n if (lastClaimedTimestamp.gt(0) && now.lt(timestampForNextClaim)) {\n // contract will return MaxUint256 if user has already claimed and cannot claim again\n if (timestampForNextClaim.eq(constants.MaxUint256)) {\n reasons.push(ClaimEligibility.AlreadyClaimed);\n } else {\n reasons.push(ClaimEligibility.WaitBeforeNextClaimTransaction);\n }\n }\n\n // if not within a browser conetext, check for wallet balance.\n // In browser context, let the wallet do that job\n if (claimCondition.price.gt(0) && isNode()) {\n const totalPrice = claimCondition.price.mul(quantity);\n const provider = this.contractWrapper.getProvider();\n if (isNativeToken(claimCondition.currencyAddress)) {\n const balance = await provider.getBalance(addressToCheck);\n if (balance.lt(totalPrice)) {\n reasons.push(ClaimEligibility.NotEnoughTokens);\n }\n } else {\n const erc20 = new ContractWrapper(provider, claimCondition.currencyAddress, ERC20Abi, {});\n const balance = await erc20.readContract.balanceOf(addressToCheck);\n if (balance.lt(totalPrice)) {\n reasons.push(ClaimEligibility.NotEnoughTokens);\n }\n }\n }\n return reasons;\n }\n\n /**\n * Returns allow list information and merkle proofs for the given address.\n * @param tokenId - the token ID to check\n * @param claimerAddress - the claimer address\n * @param claimConditionId - optional the claim condition id to get the proofs for\n */\n async getClaimerProofs(tokenId, claimerAddress, claimConditionId) {\n const claimCondition = await this.get(tokenId, claimConditionId);\n const merkleRoot = claimCondition.merkleRoot;\n const merkleRootArray = ethers.utils.stripZeros(merkleRoot);\n if (merkleRootArray.length > 0) {\n const metadata = await this.metadata.get();\n return await fetchSnapshotEntryForAddress(claimerAddress, merkleRoot.toString(), metadata.merkle, this.contractWrapper.getProvider(), this.storage, this.getSnapshotFormatVersion());\n } else {\n return null;\n }\n }\n\n /** ***************************************\n * WRITE FUNCTIONS\n *****************************************/\n\n /**\n * Set claim conditions on a single NFT\n *\n * @remarks Sets the public mint conditions that need to be fulfilled by users to claim a particular NFT in this contract.\n *\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n *\n * // Optionally specify addresses that can claim\n * const snapshots = ['0x...', '0x...']\n *\n * // Or alternatively, you can pass snapshots with the max number of NFTs each address can claim\n * // const snapshots = [{ address: '0x...', maxClaimable: 1 }, { address: '0x...', maxClaimable: 2 }]\n *\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: snapshots, // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n *\n * const tokenId = 0; // the id of the NFT to set claim conditions on\n * await dropContract.claimConditions.set(tokenId, claimConditions);\n * ```\n *\n * @param tokenId - The id of the NFT to set the claim conditions on\n * @param claimConditionInputs - The claim conditions\n * @param resetClaimEligibilityForAll - Whether to reset the state of who already claimed NFTs previously\n */\n async set(tokenId, claimConditionInputs) {\n let resetClaimEligibilityForAll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return this.setBatch([{\n tokenId,\n claimConditions: claimConditionInputs\n }], resetClaimEligibilityForAll);\n }\n\n /**\n * Set claim conditions on multiple NFTs at once\n *\n * @remarks Sets the claim conditions that need to be fulfilled by users to claim the given NFTs in this contract.\n *\n * @example\n * ```javascript\n * const claimConditionsForTokens = [\n * {\n * tokenId: 0,\n * claimConditions: [{\n * startTime: new Date(), // start the claim phase now\n * maxQuantity: 2, // limit how many mints for this tokenId\n * price: 0.01, // price for this tokenId\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * }]\n * },\n * {\n * tokenId: 1,\n * claimConditions: [{\n * startTime: new Date(),\n * price: 0.08, // different price for this tokenId\n * }]\n * },\n * ];\n *\n * await dropContract.claimConditions.setBatch(claimConditionsForTokens);\n * ```\n *\n * @param claimConditionsForToken - The claim conditions for each NFT\n * @param resetClaimEligibilityForAll - Whether to reset the state of who already claimed NFTs previously\n */\n async setBatch(claimConditionsForToken) {\n let resetClaimEligibilityForAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const merkleInfo = {};\n const processedClaimConditions = await Promise.all(claimConditionsForToken.map(async _ref => {\n let {\n tokenId,\n claimConditions\n } = _ref;\n // sanitize for single phase deletions\n let claimConditionsProcessed = claimConditions;\n if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n resetClaimEligibilityForAll = true;\n if (claimConditions.length === 0) {\n claimConditionsProcessed = [{\n startTime: new Date(0),\n currencyAddress: ethers.constants.AddressZero,\n price: 0,\n maxClaimableSupply: 0,\n maxClaimablePerWallet: 0,\n waitInSeconds: 0,\n merkleRootHash: utils.hexZeroPad([0], 32),\n snapshot: []\n }];\n } else if (claimConditions.length > 1) {\n throw new Error(\"Single phase drop contract cannot have multiple claim conditions, only one is allowed\");\n }\n }\n // if using new snapshot format, make sure that maxClaimablePerWallet is set if allowlist is set as well\n if (this.isNewSinglePhaseDrop(this.contractWrapper) || this.isNewMultiphaseDrop(this.contractWrapper)) {\n claimConditionsProcessed.forEach(cc => {\n if (cc.snapshot && cc.snapshot.length > 0 && (cc.maxClaimablePerWallet === undefined || cc.maxClaimablePerWallet === \"unlimited\")) {\n throw new Error(\"maxClaimablePerWallet must be set to a specific value when an allowlist is set.\\n\" + \"Set it to 0 to only allow addresses in the allowlist to claim the amount specified in the allowlist.\" + \"\\n\\nex:\\n\" + \"contract.claimConditions.set(tokenId, [{ snapshot: [{ address: '0x...', maxClaimable: 1 }], maxClaimablePerWallet: 0 }])\");\n }\n if (cc.snapshot && cc.snapshot.length > 0 && cc.maxClaimablePerWallet?.toString() === \"0\" && cc.snapshot.map(s => {\n if (typeof s === \"string\") {\n return 0;\n } else {\n return Number(s.maxClaimable?.toString() || 0);\n }\n }).reduce((acc, current) => {\n return acc + current;\n }, 0) === 0) {\n throw new Error(\"maxClaimablePerWallet is set to 0, and all addresses in the allowlist have max claimable 0. This means that no one can claim.\");\n }\n });\n }\n // process inputs\n const {\n snapshotInfos,\n sortedConditions\n } = await processClaimConditionInputs(claimConditionsProcessed, 0, this.contractWrapper.getProvider(), this.storage, this.getSnapshotFormatVersion());\n snapshotInfos.forEach(s => {\n merkleInfo[s.merkleRoot] = s.snapshotUri;\n });\n return {\n tokenId,\n sortedConditions\n };\n }));\n const metadata = await this.metadata.get();\n const encoded = [];\n\n // keep the old merkle roots from other tokenIds\n for (const key of Object.keys(metadata.merkle || {})) {\n merkleInfo[key] = metadata.merkle[key];\n }\n\n // upload new merkle roots to snapshot URIs if updated\n if (!deepEqual(metadata.merkle, merkleInfo)) {\n const mergedMetadata = this.metadata.parseInputMetadata({\n ...metadata,\n merkle: merkleInfo\n });\n // using internal method to just upload, avoids one contract call\n const contractURI = await this.metadata._parseAndUploadMetadata(mergedMetadata);\n if (hasFunction(\"setContractURI\", this.contractWrapper)) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"setContractURI\", [contractURI]));\n } else {\n throw new Error(\"Setting a merkle root requires implementing ContractMetadata in your contract to support storing a merkle root.\");\n }\n }\n processedClaimConditions.forEach(_ref2 => {\n let {\n tokenId,\n sortedConditions\n } = _ref2;\n if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"setClaimConditions\", [tokenId, abstractContractModelToLegacy(sortedConditions[0]), resetClaimEligibilityForAll]));\n } else if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"setClaimConditions\", [tokenId, sortedConditions.map(abstractContractModelToLegacy), resetClaimEligibilityForAll]));\n } else if (this.isNewSinglePhaseDrop(this.contractWrapper)) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"setClaimConditions\", [tokenId, abstractContractModelToNew(sortedConditions[0]), resetClaimEligibilityForAll]));\n } else if (this.isNewMultiphaseDrop(this.contractWrapper)) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"setClaimConditions\", [tokenId, sortedConditions.map(abstractContractModelToNew), resetClaimEligibilityForAll]));\n } else {\n throw new Error(\"Contract does not support claim conditions\");\n }\n });\n return {\n receipt: await this.contractWrapper.multiCall(encoded)\n };\n }\n\n /**\n * Update a single claim condition with new data.\n * @param tokenId - the token id to update\n * @param index - the index of the claim condition to update, as given by the index from the result of `getAll()`\n * @param claimConditionInput - the new data to update, previous data will be retained\n */\n async update(tokenId, index, claimConditionInput) {\n const existingConditions = await this.getAll(tokenId);\n const newConditionInputs = await updateExistingClaimConditions(index, claimConditionInput, existingConditions);\n return await this.set(tokenId, newConditionInputs);\n }\n\n /**\n * Returns proofs and the overrides required for the transaction.\n *\n * @returns - `overrides` and `proofs` as an object.\n */\n async prepareClaim(tokenId, quantity, checkERC20Allowance, address) {\n const addressToClaim = address ? address : await this.contractWrapper.getSignerAddress();\n return prepareClaim(addressToClaim, quantity, await this.getActive(tokenId), async () => (await this.metadata.get()).merkle, 0, this.contractWrapper, this.storage, checkERC20Allowance, this.getSnapshotFormatVersion());\n }\n async getClaimArguments(tokenId, destinationAddress, quantity, claimVerification) {\n if (this.isLegacyMultiPhaseDrop(this.contractWrapper)) {\n return [destinationAddress, tokenId, quantity, claimVerification.currencyAddress, claimVerification.price, claimVerification.proofs, claimVerification.maxClaimable];\n } else if (this.isLegacySinglePhaseDrop(this.contractWrapper)) {\n return [destinationAddress, tokenId, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n maxQuantityInAllowlist: claimVerification.maxClaimable\n }, ethers.utils.toUtf8Bytes(\"\")];\n }\n return [destinationAddress, tokenId, quantity, claimVerification.currencyAddress, claimVerification.price, {\n proof: claimVerification.proofs,\n quantityLimitPerWallet: claimVerification.maxClaimable,\n pricePerToken: claimVerification.priceInProof,\n currency: claimVerification.currencyAddressInProof\n }, ethers.utils.toUtf8Bytes(\"\")];\n }\n\n /**\n * Construct a claim transaction without executing it.\n * This is useful for estimating the gas cost of a claim transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n */\n async getClaimTransaction(destinationAddress, tokenId, quantity, options) {\n if (options?.pricePerToken) {\n throw new Error(\"Price per token should be set via claim conditions by calling `contract.erc1155.claimConditions.set()`\");\n }\n const claimVerification = await this.prepareClaim(tokenId, quantity, options?.checkERC20Allowance || true);\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"claim\",\n args: await this.getClaimArguments(tokenId, destinationAddress, quantity, claimVerification),\n overrides: claimVerification.overrides\n });\n }\n isNewSinglePhaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC1155ClaimConditionsV2\");\n }\n isNewMultiphaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC1155ClaimPhasesV2\");\n }\n isLegacySinglePhaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC1155ClaimConditionsV1\");\n }\n isLegacyMultiPhaseDrop(contractWrapper) {\n return detectContractFeature(contractWrapper, \"ERC1155ClaimPhasesV1\");\n }\n getSnapshotFormatVersion() {\n return this.isLegacyMultiPhaseDrop(this.contractWrapper) || this.isLegacySinglePhaseDrop(this.contractWrapper) ? SnapshotFormatVersion.V1 : SnapshotFormatVersion.V2;\n }\n}\n\n/**\n * Manages history for Edition Drop contracts\n * @public\n */\nclass DropErc1155History {\n constructor(events) {\n _defineProperty(this, \"events\", void 0);\n this.events = events;\n }\n\n /**\n * Get all claimer addresses\n *\n * @remarks Get a list of all the addresses that have claimed a token\n * @param tokenId - the tokenId of the NFT to get the addresses of*\n * @returns - A unique list of addresses that claimed the token\n * @example\n * ```javascript\n * const tokenId = \"0\";\n * const allClaimerAddresses = await contract.history.getAllClaimerAddresses(tokenId);\n * ```\n */\n async getAllClaimerAddresses(tokenId) {\n const a = (await this.events.getEvents(\"TokensClaimed\")).filter(e => e.data && BigNumber.isBigNumber(e.data.tokenId) ? e.data.tokenId.eq(tokenId) : false);\n return Array.from(new Set(a.filter(b => typeof b.data?.claimer === \"string\").map(b => b.data.claimer)));\n }\n}\n\nclass Erc20Burnable {\n constructor(erc20, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_TOKEN_BURNABLE.name);\n _defineProperty(this, \"erc20\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.erc20 = erc20;\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Burn Tokens\n *\n * @remarks Burn tokens held by the connected wallet\n *\n * @example\n * ```javascript\n * // The amount of this token you want to burn\n * const amount = 1.2;\n *\n * await contract.token.burn.tokens(amount);\n * ```\n */\n async tokens(amount) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"burn\", [await this.erc20.normalizeAmount(amount)])\n };\n }\n\n /**\n * Burn Tokens\n *\n * @remarks Burn tokens held by the specified wallet\n *\n * @example\n * ```javascript\n * // Address of the wallet sending the tokens\n * const holderAddress = \"{{wallet_address}}\";\n *\n * // The amount of this token you want to burn\n * const amount = 1.2;\n *\n * await contract.token.burn.from(holderAddress, amount);\n * ```\n */\n async from(holder, amount) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"burnFrom\", [holder, await this.erc20.normalizeAmount(amount)])\n };\n }\n}\n\n/**\n * Configure and claim ERC20 tokens\n * @remarks Manage claim phases and claim ERC20 tokens that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.token.drop.claim.to(\"0x...\", quantity);\n * ```\n */\nclass Erc20ClaimableWithConditions {\n /**\n * Configure claim conditions\n * @remarks Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n * await contract.token.drop.claim.conditions.set(claimConditions);\n * ```\n */\n\n constructor(erc20, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_TOKEN_CLAIM_CONDITIONS_V2.name);\n _defineProperty(this, \"conditions\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc20\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc20 = erc20;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n const metadata = new ContractMetadata(this.contractWrapper, CustomContractSchema, this.storage);\n this.conditions = new DropClaimConditions(this.contractWrapper, metadata, this.storage);\n }\n\n /**\n * Claim a certain amount of tokens to a specific Wallet\n *\n * @remarks Let the specified wallet claim Tokens.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const quantity = 42.69; // how many tokens you want to claim\n *\n * const tx = await contract.token.drop.claim.to(address, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param amount - Quantity of the tokens you want to claim\n * @param checkERC20Allowance - Optional, check if the wallet has enough ERC20 allowance to claim the tokens, and if not, approve the transfer\n * @param claimData\n * @returns - The transaction receipt\n */\n async to(destinationAddress, amount, options) {\n const quantity = await this.erc20.normalizeAmount(amount);\n const task = await this.conditions.getClaimTransaction(destinationAddress, quantity, options);\n return await task.execute();\n }\n}\n\n/**\n * Configure and claim ERC20 tokens\n * @remarks Manage claim phases and claim ERC20 tokens that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.token.drop.claim.to(\"0x...\", quantity);\n * ```\n */\nclass Erc20Droppable {\n /**\n * Configure claim conditions\n * @remarks Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n * await contract.nft.drop.claim.conditions.set(claimConditions);\n * ```\n */\n\n constructor(erc20, contractWrapper, storage) {\n _defineProperty(this, \"claim\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc20\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc20 = erc20;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.claim = new Erc20ClaimableWithConditions(this.erc20, this.contractWrapper, this.storage);\n }\n}\n\n/**\n * Mint Many ERC20 Tokens at once\n * @remarks Token batch minting functionality that handles unit parsing for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.token.mint.batch.to(walletAddress, [nftMetadata1, nftMetadata2, ...]);\n * ```\n * @public\n */\nclass Erc20BatchMintable {\n constructor(erc20, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_TOKEN_BATCH_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc20\", void 0);\n this.erc20 = erc20;\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Mint Tokens To Many Wallets\n *\n * @remarks Mint tokens to many wallets in one transaction.\n *\n * @example\n * ```javascript\n * // Data of the tokens you want to mint\n * const data = [\n * {\n * toAddress: \"{{wallet_address}}\", // Address to mint tokens to\n * amount: 0.2, // How many tokens to mint to specified address\n * },\n * {\n * toAddress: \"0x...\",\n * amount: 1.4,\n * }\n * ]\n *\n * await contract.token.mint.batch(data);\n * ```\n */\n async to(args) {\n const encoded = [];\n for (const arg of args) {\n encoded.push(this.contractWrapper.readContract.interface.encodeFunctionData(\"mintTo\", [arg.toAddress, await this.erc20.normalizeAmount(arg.amount)]));\n }\n return {\n receipt: await this.contractWrapper.multiCall(encoded)\n };\n }\n}\n\n/**\n * Mint ERC20 Tokens\n * @remarks Token minting functionality that handles unit parsing for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.nft.mint.to(walletAddress, nftMetadata);\n * ```\n * @public\n */\nclass Erc20Mintable {\n /**\n * Batch mint Tokens to many addresses\n */\n\n constructor(erc20, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_TOKEN_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc20\", void 0);\n _defineProperty(this, \"batch\", void 0);\n this.erc20 = erc20;\n this.contractWrapper = contractWrapper;\n this.batch = this.detectErc20BatchMintable();\n }\n\n /**\n * Mint Tokens\n *\n * @remarks Mint tokens to a specified address.\n *\n * @example\n * ```javascript\n * const toAddress = \"{{wallet_address}}\"; // Address of the wallet you want to mint the tokens to\n * const amount = \"1.5\"; // The amount of this token you want to mint\n * await contract.token.mint.to(toAddress, amount);\n * ```\n */\n async to(to, amount) {\n const tx = await this.getMintTransaction(to, amount);\n return tx.execute();\n }\n async getMintTransaction(to, amount) {\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"mintTo\",\n args: [to, await this.erc20.normalizeAmount(amount)]\n });\n }\n detectErc20BatchMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC20BatchMintable\")) {\n return new Erc20BatchMintable(this.erc20, this.contractWrapper);\n }\n return undefined;\n }\n}\n\n/**\n * Enables generating ERC20 Tokens with rules and an associated signature, which can then be minted by anyone securely\n * @public\n */\n// TODO consolidate into a single class\nclass Erc20SignatureMintable {\n constructor(contractWrapper, roles) {\n _defineProperty(this, \"featureName\", FEATURE_TOKEN_SIGNATURE_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"roles\", void 0);\n this.contractWrapper = contractWrapper;\n this.roles = roles;\n }\n\n /**\n * Mint tokens from a signature\n *\n * @remarks Mint a certain amount of tokens from a previously generated signature.\n *\n * @example\n * ```javascript\n * // see how to craft a payload to sign in the `generate()` documentation\n * const signedPayload = contract.erc20.signature.generate(payload);\n *\n * // Use the signed payload to mint the tokens\n * const tx = contract.erc20.signature.mint(signedPayload);\n * ```\n * @param signedPayload - the previously generated payload and signature with {@link Erc20SignatureMintable.generate}\n * @twfeature ERC20SignatureMintable\n */\n async mint(signedPayload) {\n const mintRequest = signedPayload.payload;\n const signature = signedPayload.signature;\n const message = await this.mapPayloadToContractStruct(mintRequest);\n const overrides = await this.contractWrapper.getCallOverrides();\n await setErc20Allowance(this.contractWrapper, BigNumber.from(message.price), mintRequest.currencyAddress, overrides);\n return {\n receipt: await this.contractWrapper.sendTransaction(\"mintWithSignature\", [message, signature], overrides)\n };\n }\n\n /**\n * Mint any number of generated tokens signatures at once\n * @remarks Mint multiple token signatures in one transaction. Note that this is only possible for free mints (cannot batch mints with a price attached to it for security reasons)\n * @param signedPayloads - the array of signed payloads to mint\n * @twfeature ERC20SignatureMintable\n */\n async mintBatch(signedPayloads) {\n const contractPayloads = await Promise.all(signedPayloads.map(async s => {\n const message = await this.mapPayloadToContractStruct(s.payload);\n const signature = s.signature;\n const price = s.payload.price;\n if (BigNumber.from(price).gt(0)) {\n throw new Error(\"Can only batch free mints. For mints with a price, use regular mint()\");\n }\n return {\n message,\n signature\n };\n }));\n const encoded = contractPayloads.map(p => {\n return this.contractWrapper.readContract.interface.encodeFunctionData(\"mintWithSignature\", [p.message, p.signature]);\n });\n return {\n receipt: await this.contractWrapper.multiCall(encoded)\n };\n }\n\n /**\n * Verify that a payload is correctly signed\n * @param signedPayload - the payload to verify\n * @twfeature ERC20SignatureMintable\n *\n * ```javascript\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * quantity: 4.2, // The quantity of tokens to be minted\n * to: {{wallet_address}}, // Who will receive the tokens\n * price: 0.5, // the price to pay for minting those tokens\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now,\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this token mint\n * };\n *\n * const signedPayload = await contract.erc20.signature.generate(payload);\n * // Now you can verify if the signed payload is valid\n * const isValid = await contract.erc20.signature.verify(signedPayload);\n * ```\n */\n async verify(signedPayload) {\n const mintRequest = signedPayload.payload;\n const signature = signedPayload.signature;\n const message = await this.mapPayloadToContractStruct(mintRequest);\n const verification = await this.contractWrapper.readContract.verify(message, signature);\n return verification[0];\n }\n\n /**\n * Generate a signature that can be used to mint a certain amount of tokens\n *\n * @remarks Takes in a quantity of tokens, some conditions for how it can be minted and signs it with your private key. The generated signature can then be used to mint those tokens using the exact payload and signature generated.\n *\n * @example\n * ```javascript\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * quantity: 4.2, // The quantity of tokens to be minted\n * to: {{wallet_address}}, // Who will receive the tokens\n * price: 0.5, // the price to pay for minting those tokens\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now,\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this token mint\n * };\n *\n * const signedPayload = await contract.erc20.signature.generate(payload);\n * // now anyone can use these to mint the NFT using `contract.erc20.signature.mint(signedPayload)`\n * ```\n * @param mintRequest - the payload to sign\n * @returns the signed payload and the corresponding signature\n * @twfeature ERC20SignatureMintable\n */\n async generate(mintRequest) {\n return (await this.generateBatch([mintRequest]))[0];\n }\n\n /**\n * Generate a batch of signatures that can be used to mint many token signatures.\n *\n * @remarks See {@link Erc20SignatureMintable.generate}\n *\n * @param payloadsToSign - the payloads to sign\n * @returns an array of payloads and signatures\n * @twfeature ERC20SignatureMintable\n */\n async generateBatch(payloadsToSign) {\n await this.roles?.verify([\"minter\"], await this.contractWrapper.getSignerAddress());\n const parsedRequests = payloadsToSign.map(m => Signature20PayloadInput.parse(m));\n const chainId = await this.contractWrapper.getChainID();\n const signer = this.contractWrapper.getSigner();\n invariant(signer, \"No signer available\");\n\n // ERC20Permit (EIP-712) spec differs from signature mint 721, 1155.\n const name = await this.contractWrapper.readContract.name();\n return await Promise.all(parsedRequests.map(async m => {\n const finalPayload = Signature20PayloadOutput.parse(m);\n const signature = await this.contractWrapper.signTypedData(signer, {\n name,\n version: \"1\",\n chainId,\n verifyingContract: this.contractWrapper.readContract.address\n }, {\n MintRequest: MintRequest20\n }, await this.mapPayloadToContractStruct(finalPayload));\n return {\n payload: finalPayload,\n signature: signature.toString()\n };\n }));\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * Maps a payload to the format expected by the contract\n *\n * @internal\n *\n * @param mintRequest - The payload to map.\n * @returns - The mapped payload.\n */\n async mapPayloadToContractStruct(mintRequest) {\n const normalizedPrice = await normalizePriceValue(this.contractWrapper.getProvider(), mintRequest.price, mintRequest.currencyAddress);\n const amountWithDecimals = ethers.utils.parseUnits(mintRequest.quantity, await this.contractWrapper.readContract.decimals());\n return {\n to: mintRequest.to,\n primarySaleRecipient: mintRequest.primarySaleRecipient,\n quantity: amountWithDecimals,\n price: normalizedPrice,\n currency: mintRequest.currencyAddress,\n validityEndTimestamp: mintRequest.mintEndTime,\n validityStartTimestamp: mintRequest.mintStartTime,\n uid: mintRequest.uid\n };\n }\n}\n\n/**\n * Standard ERC20 Token functions\n * @remarks Basic functionality for a ERC20 contract that handles all unit transformation for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.erc20.transfer(walletAddress, amount);\n * ```\n * @public\n */\nclass Erc20 {\n /**\n * Mint tokens\n */\n\n get chainId() {\n return this._chainId;\n }\n constructor(contractWrapper, storage, chainId) {\n _defineProperty(this, \"featureName\", FEATURE_TOKEN.name);\n _defineProperty(this, \"mintable\", void 0);\n _defineProperty(this, \"burnable\", void 0);\n _defineProperty(this, \"droppable\", void 0);\n _defineProperty(this, \"signatureMintable\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.mintable = this.detectErc20Mintable();\n this.burnable = this.detectErc20Burnable();\n this.droppable = this.detectErc20Droppable();\n this.signatureMintable = this.detectErc20SignatureMintable();\n this._chainId = chainId;\n }\n\n /**\n * @internal\n */\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n\n /**\n * @internal\n */\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n ////// Standard ERC20 Extension //////\n\n /**\n * Get the token Metadata (name, symbol, etc...)\n *\n * @example\n * ```javascript\n * const token = await contract.erc20.get();\n * ```\n * @returns The token metadata\n * @twfeature ERC20\n */\n async get() {\n return await fetchCurrencyMetadata(this.contractWrapper.getProvider(), this.getAddress());\n }\n\n /**\n * Get Token Balance for the currently connected wallet\n *\n * @remarks Get a wallets token balance.\n *\n * @example\n * ```javascript\n * const balance = await contract.erc20.balance();\n * ```\n *\n * @returns The balance of a specific wallet.\n * @twfeature ERC20\n */\n async balance() {\n return await this.balanceOf(await this.contractWrapper.getSignerAddress());\n }\n\n /**\n * Get Token Balance\n *\n * @remarks Get a wallets token balance.\n *\n * @example\n * ```javascript\n * // Address of the wallet to check token balance\n * const walletAddress = \"{{wallet_address}}\";\n * const balance = await contract.erc20.balanceOf(walletAddress);\n * ```\n *\n * @returns The balance of a specific wallet.\n * @twfeature ERC20\n */\n async balanceOf(address) {\n return this.getValue(await this.contractWrapper.readContract.balanceOf(address));\n }\n\n /**\n * The total supply for this Token\n * @remarks Get how much supply has been minted\n * @example\n * ```javascript\n * const balance = await contract.erc20.totalSupply();\n * ```\n * @twfeature ERC20\n */\n async totalSupply() {\n return await this.getValue(await this.contractWrapper.readContract.totalSupply());\n }\n\n /**\n * Get Token Allowance\n *\n * @remarks Get the allowance of a 'spender' wallet over the connected wallet's funds - the allowance of a different address for a token is the amount of tokens that the `spender` wallet is allowed to spend on behalf of the connected wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to check token allowance\n * const spenderAddress = \"0x...\";\n * const allowance = await contract.erc20.allowance(spenderAddress);\n * ```\n *\n * @returns The allowance of one wallet over anothers funds.\n * @twfeature ERC20\n */\n async allowance(spender) {\n return await this.allowanceOf(await this.contractWrapper.getSignerAddress(), spender);\n }\n\n /**\n * Get Token Allowance\n *\n * @remarks Get the allowance of one wallet over another wallet's funds - the allowance of a different address for a token is the amount of tokens that the wallet is allowed to spend on behalf of the specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet who owns the funds\n * const owner = \"{{wallet_address}}\";\n * // Address of the wallet to check token allowance\n * const spender = \"0x...\";\n * const allowance = await contract.erc20.allowanceOf(owner, spender);\n * ```\n *\n * @returns The allowance of one wallet over anothers funds.\n * @twfeature ERC20\n */\n async allowanceOf(owner, spender) {\n return await this.getValue(await this.contractWrapper.readContract.allowance(owner, spender));\n }\n\n /**\n * Transfer Tokens\n *\n * @remarks Transfer tokens from the connected wallet to another wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to send the tokens to\n * const toAddress = \"0x...\";\n * // The amount of tokens you want to send\n * const amount = 0.1;\n * await contract.erc20.transfer(toAddress, amount);\n * ```\n * @twfeature ERC20\n */\n async transfer(to, amount) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"transfer\", [to, await this.normalizeAmount(amount)])\n };\n }\n\n /**\n * Transfer Tokens From Address\n *\n * @remarks Transfer tokens from one wallet to another\n *\n * @example\n * ```javascript\n * // Address of the wallet sending the tokens\n * const fromAddress = \"{{wallet_address}}\";\n * // Address of the wallet you want to send the tokens to\n * const toAddress = \"0x...\";\n * // The number of tokens you want to send\n * const amount = 1.2\n * // Note that the connected wallet must have approval to transfer the tokens of the fromAddress\n * await contract.erc20.transferFrom(fromAddress, toAddress, amount);\n * ```\n * @twfeature ERC20\n */\n async transferFrom(from, to, amount) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"transferFrom\", [from, to, await this.normalizeAmount(amount)])\n };\n }\n\n /**\n * Allows the specified `spender` wallet to transfer the given `amount` of tokens to another wallet\n *\n * @example\n * ```javascript\n * // Address of the wallet to allow transfers from\n * const spenderAddress = \"0x...\";\n * // The number of tokens to give as allowance\n * const amount = 100\n * await contract.erc20.setAllowance(spenderAddress, amount);\n * ```\n * @twfeature ERC20\n */\n async setAllowance(spender, amount) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"approve\", [spender, await this.normalizeAmount(amount)])\n };\n }\n\n /**\n * Transfer Tokens To Many Wallets\n *\n * @remarks Mint tokens from the connected wallet to many wallets\n *\n * @example\n * ```javascript\n * // Data of the tokens you want to mint\n * const data = [\n * {\n * toAddress: \"{{wallet_address}}\", // Address to mint tokens to\n * amount: 100, // How many tokens to mint to specified address\n * },\n * {\n * toAddress: \"0x...\",\n * amount: 100,\n * }\n * ]\n *\n * await contract.erc20.transferBatch(data);\n * ```\n */\n async transferBatch(args) {\n const encoded = await Promise.all(args.map(async arg => {\n const amountWithDecimals = await this.normalizeAmount(arg.amount);\n return this.contractWrapper.readContract.interface.encodeFunctionData(\"transfer\", [arg.toAddress, amountWithDecimals]);\n }));\n await this.contractWrapper.multiCall(encoded);\n }\n\n ////// ERC20 Mintable Extension //////\n\n /**\n * Mint Tokens\n *\n * @remarks Mint tokens to the connected wallet.\n *\n * @example\n * ```javascript\n * const amount = \"1.5\"; // The amount of this token you want to mint\n * await contract.erc20.mint(toAddress, amount);\n * ```\n * @twfeature ERC20Mintable\n */\n async mint(amount) {\n return this.mintTo(await this.contractWrapper.getSignerAddress(), amount);\n }\n\n /**\n * Mint Tokens\n *\n * @remarks Mint tokens to a specified address.\n *\n * @example\n * ```javascript\n * const toAddress = \"{{wallet_address}}\"; // Address of the wallet you want to mint the tokens to\n * const amount = \"1.5\"; // The amount of this token you want to mint\n * await contract.erc20.mintTo(toAddress, amount);\n * ```\n * @twfeature ERC20Mintable\n */\n async mintTo(receiver, amount) {\n return assertEnabled(this.mintable, FEATURE_TOKEN_MINTABLE).to(receiver, amount);\n }\n\n /**\n * Construct a mint transaction without executing it.\n * This is useful for estimating the gas cost of a mint transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param receiver - Address you want to send the token to\n * @param amount - The amount of tokens you want to mint\n */\n async getMintTransaction(receiver, amount) {\n return assertEnabled(this.mintable, FEATURE_TOKEN_MINTABLE).getMintTransaction(receiver, amount);\n }\n\n ////// ERC20 BatchMintable Extension //////\n\n /**\n * Mint Tokens To Many Wallets\n *\n * @remarks Mint tokens to many wallets in one transaction.\n *\n * @example\n * ```javascript\n * // Data of the tokens you want to mint\n * const data = [\n * {\n * toAddress: \"{{wallet_address}}\", // Address to mint tokens to\n * amount: 0.2, // How many tokens to mint to specified address\n * },\n * {\n * toAddress: \"0x...\",\n * amount: 1.4,\n * }\n * ]\n *\n * await contract.mintBatchTo(data);\n * ```\n * @twfeature ERC20BatchMintable\n */\n async mintBatchTo(args) {\n return assertEnabled(this.mintable?.batch, FEATURE_TOKEN_BATCH_MINTABLE).to(args);\n }\n\n ////// ERC20 Burnable Extension //////\n\n /**\n * Burn Tokens\n *\n * @remarks Burn tokens held by the connected wallet\n *\n * @example\n * ```javascript\n * // The amount of this token you want to burn\n * const amount = 1.2;\n *\n * await contract.erc20.burn(amount);\n * ```\n * @twfeature ERC20Burnable\n */\n async burn(amount) {\n return assertEnabled(this.burnable, FEATURE_TOKEN_BURNABLE).tokens(amount);\n }\n\n /**\n * Burn Tokens\n *\n * @remarks Burn tokens held by the specified wallet\n *\n * @example\n * ```javascript\n * // Address of the wallet sending the tokens\n * const holderAddress = \"{{wallet_address}}\";\n *\n * // The amount of this token you want to burn\n * const amount = 1.2;\n *\n * await contract.erc20.burnFrom(holderAddress, amount);\n * ```\n * @twfeature ERC20Burnable\n */\n async burnFrom(holder, amount) {\n return assertEnabled(this.burnable, FEATURE_TOKEN_BURNABLE).from(holder, amount);\n }\n\n ////// ERC20 Claimable Extension //////\n\n /**\n * Claim a certain amount of tokens to the connected Wallet\n *\n * @remarks Let the specified wallet claim Tokens.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const quantity = 42.69; // how many tokens you want to claim\n *\n * const tx = await contract.erc20.claim(address, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param amount - Quantity of the tokens you want to claim\n * @param checkERC20Allowance - Optional, check if the wallet has enough ERC20 allowance to claim the tokens, and if not, approve the transfer\n * @param claimData\n * @returns - The transaction receipt\n * @twfeature ERC20ClaimableWithConditions\n */\n async claim(amount, options) {\n return this.claimTo(await this.contractWrapper.getSignerAddress(), amount, options);\n }\n\n /**\n * Claim a certain amount of tokens to a specific Wallet\n *\n * @remarks Let the specified wallet claim Tokens.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const quantity = 42.69; // how many tokens you want to claim\n *\n * const tx = await contract.erc20.claim(address, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param amount - Quantity of the tokens you want to claim\n * @param checkERC20Allowance - Optional, check if the wallet has enough ERC20 allowance to claim the tokens, and if not, approve the transfer\n * @param claimData\n * @returns - The transaction receipt\n * @twfeature ERC20ClaimableWithConditions\n */\n async claimTo(destinationAddress, amount, options) {\n return assertEnabled(this.droppable?.claim, FEATURE_TOKEN_CLAIM_CONDITIONS_V2).to(destinationAddress, amount, options);\n }\n\n /**\n * Configure claim conditions\n * @remarks Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n * await contract.erc20.claimConditions.set(claimConditions);\n * ```\n * @twfeature ERC20ClaimableWithConditions\n */\n get claimConditions() {\n return assertEnabled(this.droppable?.claim, FEATURE_TOKEN_CLAIM_CONDITIONS_V2).conditions;\n }\n\n ////// ERC20 SignatureMint Extension //////\n\n /**\n * Signature Minting\n * @remarks Generate dynamic tokens with your own signature, and let others mint them using that signature.\n * @example\n * ```javascript\n * // see how to craft a payload to sign in the `contract.erc20.signature.generate()` documentation\n * const signedPayload = contract.erc20.signature().generate(payload);\n *\n * // now the payload can be used to mint tokens\n * const tx = contract.erc20.signature.mint(signedPayload);\n * ```\n * @twfeature ERC20SignatureMintable\n */\n get signature() {\n return assertEnabled(this.signatureMintable, FEATURE_TOKEN_SIGNATURE_MINTABLE);\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * returns the wei amount from a token amount\n * @internal\n * @param amount\n */\n async normalizeAmount(amount) {\n const decimals = await this.contractWrapper.readContract.decimals();\n return ethers.utils.parseUnits(AmountSchema.parse(amount), decimals);\n }\n\n /**\n * @internal\n */\n async getValue(value) {\n return await fetchCurrencyValue(this.contractWrapper.getProvider(), this.getAddress(), BigNumber.from(value));\n }\n detectErc20Mintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC20\")) {\n return new Erc20Mintable(this, this.contractWrapper);\n }\n return undefined;\n }\n detectErc20Burnable() {\n if (detectContractFeature(this.contractWrapper, \"ERC20Burnable\")) {\n return new Erc20Burnable(this, this.contractWrapper);\n }\n return undefined;\n }\n detectErc20Droppable() {\n if (detectContractFeature(this.contractWrapper, \"ERC20ClaimConditionsV1\") || detectContractFeature(this.contractWrapper, \"ERC20ClaimConditionsV2\") || detectContractFeature(this.contractWrapper, \"ERC20ClaimPhasesV1\") || detectContractFeature(this.contractWrapper, \"ERC20ClaimPhasesV2\")) {\n return new Erc20Droppable(this, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc20SignatureMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC20SignatureMintable\")) {\n return new Erc20SignatureMintable(this.contractWrapper);\n }\n return undefined;\n }\n}\n\n/**\n * Manages history for Token contracts\n * @public\n */\nclass TokenERC20History {\n constructor(contractWrapper, events) {\n _defineProperty(this, \"events\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n this.events = events;\n }\n\n /**\n * Get all holder balances\n *\n * @remarks Lets you get all token holders and their corresponding balances\n * @returns - A JSON object of all token holders and their corresponding balances\n * @example\n * ```javascript\n * const allHolderBalances = await contract.history.getAllHolderBalances();\n * ```\n */\n async getAllHolderBalances() {\n const a = await this.events.getEvents(\"Transfer\");\n const txns = a.map(b => b.data);\n const balances = {};\n txns.forEach(item => {\n const from = item?.from;\n const to = item?.to;\n const amount = item?.value;\n if (!(from === constants.AddressZero)) {\n if (!(from in balances)) {\n balances[from] = BigNumber.from(0);\n }\n balances[from] = balances[from].sub(amount);\n }\n if (!(to === constants.AddressZero)) {\n if (!(to in balances)) {\n balances[to] = BigNumber.from(0);\n }\n balances[to] = balances[to].add(amount);\n }\n });\n return Promise.all(Object.keys(balances).map(async addr => ({\n holder: addr,\n balance: await fetchCurrencyValue(this.contractWrapper.getProvider(), this.contractWrapper.readContract.address, balances[addr])\n })));\n }\n}\n\n/**\n * Standard ERC20 Token functions\n * @remarks Basic functionality for a ERC20 contract that handles all unit transformation for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.token.transfer(walletAddress, amount);\n * ```\n * @public\n */\nclass StandardErc20 {\n get chainId() {\n return this._chainId;\n }\n constructor(contractWrapper, storage, chainId) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"erc20\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.erc20 = new Erc20(this.contractWrapper, this.storage, chainId);\n this._chainId = chainId;\n }\n\n /**\n * @internal\n */\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n\n /**\n * @internal\n */\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n /** ******************************\n * READ FUNCTIONS\n *******************************/\n\n /**\n * Get the token Metadata (name, symbol, etc...)\n *\n * @example\n * ```javascript\n * const token = await contract.get();\n * ```\n * @returns The token metadata\n */\n async get() {\n return this.erc20.get();\n }\n\n /**\n * Get Token Balance for the currently connected wallet\n *\n * @remarks Get a wallets token balance.\n *\n * @example\n * ```javascript\n * const balance = await contract.balance();\n * ```\n *\n * @returns The balance of a specific wallet.\n */\n async balance() {\n return await this.erc20.balance();\n }\n\n /**\n * Get Token Balance\n *\n * @remarks Get a wallets token balance.\n *\n * @example\n * ```javascript\n * // Address of the wallet to check token balance\n * const walletAddress = \"{{wallet_address}}\";\n * const balance = await contract.balanceOf(walletAddress);\n * ```\n *\n * @returns The balance of a specific wallet.\n */\n async balanceOf(address) {\n return this.erc20.balanceOf(address);\n }\n\n /**\n * The total supply for this Token\n * @remarks Get how much supply has been minted\n * @example\n * ```javascript\n * const balance = await contract.totalSupply();\n * ```\n */\n async totalSupply() {\n return await this.erc20.totalSupply();\n }\n\n /**\n * Get Token Allowance\n *\n * @remarks Get the allowance of a 'spender' wallet over the connected wallet's funds - the allowance of a different address for a token is the amount of tokens that the `spender` wallet is allowed to spend on behalf of the connected wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to check token allowance\n * const spenderAddress = \"0x...\";\n * const allowance = await contract.allowance(spenderAddress);\n * ```\n *\n * @returns The allowance of one wallet over anothers funds.\n */\n async allowance(spender) {\n return await this.erc20.allowance(spender);\n }\n\n /**\n * Get Token Allowance\n *\n * @remarks Get the allowance of one wallet over another wallet's funds - the allowance of a different address for a token is the amount of tokens that the wallet is allowed to spend on behalf of the specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet who owns the funds\n * const owner = \"{{wallet_address}}\";\n * // Address of the wallet to check token allowance\n * const spender = \"0x...\";\n * const allowance = await contract.allowanceOf(owner, spender);\n * ```\n *\n * @returns The allowance of one wallet over anothers funds.\n */\n async allowanceOf(owner, spender) {\n return await this.erc20.allowanceOf(owner, spender);\n }\n\n /** ******************************\n * WRITE FUNCTIONS\n *******************************/\n\n /**\n * Transfer Tokens\n *\n * @remarks Transfer tokens from the connected wallet to another wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to send the tokens to\n * const toAddress = \"0x...\";\n * // The amount of tokens you want to send\n * const amount = 0.1;\n * await contract.transfer(toAddress, amount);\n * ```\n */\n async transfer(to, amount) {\n return this.erc20.transfer(to, amount);\n }\n\n /**\n * Transfer Tokens From Address\n *\n * @remarks Transfer tokens from one wallet to another\n *\n * @example\n * ```javascript\n * // Address of the wallet sending the tokens\n * const fromAddress = \"{{wallet_address}}\";\n * // Address of the wallet you want to send the tokens to\n * const toAddress = \"0x...\";\n * // The number of tokens you want to send\n * const amount = 1.2\n * // Note that the connected wallet must have approval to transfer the tokens of the fromAddress\n * await contract.transferFrom(fromAddress, toAddress, amount);\n * ```\n */\n async transferFrom(from, to, amount) {\n return this.erc20.transferFrom(from, to, amount);\n }\n\n /**\n * Allows the specified `spender` wallet to transfer the given `amount` of tokens to another wallet\n *\n * @example\n * ```javascript\n * // Address of the wallet to allow transfers from\n * const spenderAddress = \"0x...\";\n * // The number of tokens to give as allowance\n * const amount = 100\n * await contract.setAllowance(spenderAddress, amount);\n * ```\n */\n async setAllowance(spender, amount) {\n return this.erc20.setAllowance(spender, amount);\n }\n\n /**\n * Transfer Tokens To Many Wallets\n *\n * @remarks Mint tokens from the connected wallet to many wallets\n *\n * @example\n * ```javascript\n * // Data of the tokens you want to mint\n * const data = [\n * {\n * toAddress: \"{{wallet_address}}\", // Address to mint tokens to\n * amount: 100, // How many tokens to mint to specified address\n * },\n * {\n * toAddress: \"0x...\",\n * amount: 100,\n * }\n * ]\n *\n * await contract.transferBatch(data);\n * ```\n */\n async transferBatch(args) {\n return this.erc20.transferBatch(args);\n }\n}\n\nclass Erc721Burnable {\n constructor(contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_BURNABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Burn NFTs\n *\n * @remarks Burn NFTs held by the connected wallet\n *\n * @example\n * ```javascript\n * // The token ID of the NFT you want to burn\n * const tokenId = 0;\n *\n * await contract.nft.burn.token(tokenId);\n * ```\n */\n async token(tokenId) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"burn\", [tokenId])\n };\n }\n}\n\n/**\n * Configure and claim ERC721 NFTs\n * @remarks Manage claim phases and claim ERC721 NFTs that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.erc721.claim(tokenId, quantity);\n * ```\n */\nclass Erc721Claimable {\n constructor(erc721, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_CLAIM_CUSTOM.name);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Construct a claim transaction without executing it.\n * This is useful for estimating the gas cost of a claim transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Options for claiming the NFTs\n */\n async getClaimTransaction(destinationAddress, quantity, options) {\n let overrides = {};\n if (options && options.pricePerToken) {\n overrides = await calculateClaimCost(this.contractWrapper, options.pricePerToken, quantity, options.currencyAddress, options.checkERC20Allowance);\n }\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"claim\",\n args: [destinationAddress, quantity],\n overrides\n });\n }\n\n /**\n * Claim NFTs to a specific Wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const tokenId = 0; // the id of the NFT you want to claim\n * const quantity = 1; // how many NFTs you want to claim\n *\n * const tx = await contract.erc721.claimTo(address, tokenId, quantity);\n * const receipt = tx[0].receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Options for claiming the NFTs\n *\n * @returns - Receipt for the transaction\n */\n async to(destinationAddress, quantity, options) {\n const task = await this.getClaimTransaction(destinationAddress, quantity, options);\n const {\n receipt\n } = await task.execute();\n const event = this.contractWrapper.parseLogs(\"TokensClaimed\", receipt?.logs);\n const startingIndex = event[0].args.startTokenId;\n const endingIndex = startingIndex.add(quantity);\n const results = [];\n for (let id = startingIndex; id.lt(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc721.get(id)\n });\n }\n return results;\n }\n}\n\n/**\n * Configure and claim ERC721 NFTs\n * @remarks Manage claim phases and claim ERC721 NFTs that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.erc721.claim(quantity);\n * await contract.erc721.claimConditions.getActive();\n * ```\n */\nclass Erc721ClaimableWithConditions {\n /**\n * Configure claim conditions\n * @remarks Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n * await contract.erc721.claimConditions.set(claimConditions);\n * ```\n */\n\n constructor(erc721, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_CLAIM_CONDITIONS_V2.name);\n _defineProperty(this, \"conditions\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n const metadata = new ContractMetadata(this.contractWrapper, CustomContractSchema, this.storage);\n this.conditions = new DropClaimConditions(this.contractWrapper, metadata, this.storage);\n }\n\n /**\n * Claim unique NFTs to a specific Wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const quantity = 1; // how many unique NFTs you want to claim\n *\n * const tx = await contract.erc721.claimTo(address, quantity);\n * const receipt = tx[0].receipt; // the transaction receipt\n * const claimedTokenId = tx[0].id; // the id of the first NFT claimed\n * const claimedNFT = await tx[0].data(); // (optional) get the first claimed NFT metadata\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param quantity - Quantity of the tokens you want to claim\n * @param options\n * @returns - an array of results containing the id of the token claimed, the transaction receipt and a promise to optionally fetch the nft metadata\n */\n async to(destinationAddress, quantity, options) {\n const task = await this.conditions.getClaimTransaction(destinationAddress, quantity, options);\n const {\n receipt\n } = await task.execute();\n const event = this.contractWrapper.parseLogs(\"TokensClaimed\", receipt?.logs);\n const startingIndex = event[0].args.startTokenId;\n const endingIndex = startingIndex.add(quantity);\n const results = [];\n for (let id = startingIndex; id.lt(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc721.get(id)\n });\n }\n return results;\n }\n}\n\n/**\n * Lazily mint and claim ERC721 NFTs\n * @remarks Manage claim phases and claim ERC721 NFTs that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.drop.claim(quantity);\n * ```\n */\nclass Erc721LazyMintable {\n /**\n * Delayed reveal\n * @remarks Create a batch of encrypted NFTs that can be revealed at a later time.\n * @example\n * ```javascript\n * // the real NFTs, these will be encrypted until you reveal them\n * const realNFTs = [{\n * name: \"Common NFT #1\",\n * description: \"Common NFT, one of many.\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }, {\n * name: \"Super Rare NFT #2\",\n * description: \"You got a Super Rare NFT!\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n * // A placeholder NFT that people will get immediately in their wallet, and will be converted to the real NFT at reveal time\n * const placeholderNFT = {\n * name: \"Hidden NFT\",\n * description: \"Will be revealed next week!\"\n * };\n * // Create and encrypt the NFTs\n * await contract.nft.drop.revealer.createDelayedRevealBatch(\n * placeholderNFT,\n * realNFTs,\n * \"my secret password\",\n * );\n * // Whenever you're ready, reveal your NFTs at any time\n * const batchId = 0; // the batch to reveal\n * await contract.erc721.revealer.reveal(batchId, \"my secret password\");\n * ```\n */\n\n /**\n * Claim tokens and configure claim conditions\n * @remarks Let users claim NFTs. Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const quantity = 10;\n * await contract.erc721.claim(quantity);\n * ```\n */\n\n constructor(erc721, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_LAZY_MINTABLE.name);\n _defineProperty(this, \"revealer\", void 0);\n _defineProperty(this, \"claimWithConditions\", void 0);\n _defineProperty(this, \"claim\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.revealer = this.detectErc721Revealable();\n this.claimWithConditions = this.detectErc721ClaimableWithConditions();\n this.claim = this.detectErc721Claimable();\n }\n\n /**\n * Create a batch of unique NFTs to be claimed in the future\n *\n * @remarks Create batch allows you to create a batch of many unique NFTs in one transaction.\n *\n * @example\n * ```javascript\n * // Custom metadata of the NFTs to create\n * const metadatas = [{\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n *\n * const results = await contract.erc721.lazyMint(metadatas); // uploads and creates the NFTs on chain\n * const firstTokenId = results[0].id; // token id of the first created NFT\n * const firstNFT = await results[0].data(); // (optional) fetch details of the first created NFT\n * ```\n *\n * @param metadatas - The metadata to include in the batch.\n * @param options - optional upload progress callback\n */\n async lazyMint(metadatas, options) {\n const startFileNumber = await this.erc721.nextTokenIdToMint();\n const batch = await uploadOrExtractURIs(metadatas, this.storage, startFileNumber.toNumber(), options);\n // ensure baseUri is the same for the entire batch\n const baseUri = getBaseUriFromBatch(batch);\n const receipt = await this.contractWrapper.sendTransaction(\"lazyMint\", [batch.length, baseUri.endsWith(\"/\") ? baseUri : `${baseUri}/`, ethers.utils.toUtf8Bytes(\"\")]);\n const event = this.contractWrapper.parseLogs(\"TokensLazyMinted\", receipt?.logs);\n const startingIndex = event[0].args.startTokenId;\n const endingIndex = event[0].args.endTokenId;\n const results = [];\n for (let id = startingIndex; id.lte(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc721.getTokenMetadata(id)\n });\n }\n return results;\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n detectErc721Revealable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721Revealable\")) {\n return new DelayedReveal(this.contractWrapper, this.storage, FEATURE_NFT_REVEALABLE.name, () => this.erc721.nextTokenIdToMint());\n }\n return undefined;\n }\n detectErc721ClaimableWithConditions() {\n if (detectContractFeature(this.contractWrapper, \"ERC721ClaimConditionsV1\") || detectContractFeature(this.contractWrapper, \"ERC721ClaimConditionsV2\") || detectContractFeature(this.contractWrapper, \"ERC721ClaimPhasesV1\") || detectContractFeature(this.contractWrapper, \"ERC721ClaimPhasesV2\")) {\n return new Erc721ClaimableWithConditions(this.erc721, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc721Claimable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721ClaimCustom\")) {\n return new Erc721Claimable(this.erc721, this.contractWrapper);\n }\n return undefined;\n }\n}\n\n/**\n * Mint Many ERC721 NFTs at once\n * @remarks NFT batch minting functionality that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.nft.mint.batch.to(walletAddress, [nftMetadata1, nftMetadata2, ...]);\n * ```\n * @public\n */\nclass Erc721BatchMintable {\n constructor(erc721, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_BATCH_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n\n /**\n * Mint Many unique NFTs\n *\n * @remarks Mint many unique NFTs at once to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const walletAddress = \"{{wallet_address}}\";\n *\n * // Custom metadata of the NFTs you want to mint.\n * const metadatas = [{\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT #2\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/other/image.png\"),\n * }];\n *\n * const tx = await contract.mint.batch.to(walletAddress, metadatas);\n * const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs\n * const firstTokenId = tx[0].id; // token id of the first minted NFT\n * const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT\n * ```\n */\n async to(to, metadatas) {\n const uris = await uploadOrExtractURIs(metadatas, this.storage);\n const encoded = uris.map(uri => this.contractWrapper.readContract.interface.encodeFunctionData(\"mintTo\", [to, uri]));\n const receipt = await this.contractWrapper.multiCall(encoded);\n const events = this.contractWrapper.parseLogs(\"TokensMinted\", receipt.logs);\n if (events.length === 0 || events.length < metadatas.length) {\n throw new Error(\"TokenMinted event not found, minting failed\");\n }\n return events.map(e => {\n const id = e.args.tokenIdMinted;\n return {\n id,\n receipt,\n data: () => this.erc721.get(id)\n };\n });\n }\n}\n\n/**\n * Mint ERC721 NFTs\n * @remarks NFT minting functionality that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.nft.mint.to(walletAddress, nftMetadata);\n * ```\n * @public\n */\nclass Erc721Mintable {\n constructor(erc721, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"batch\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.batch = this.detectErc721BatchMintable();\n }\n\n /**\n * Mint a unique NFT\n *\n * @remarks Mint a unique NFT to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const walletAddress = \"{{wallet_address}}\";\n *\n * // Custom metadata of the NFT, note that you can fully customize this metadata with other properties.\n * const metadata = {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const tx = await contract.nft.mint.to(walletAddress, metadata);\n * const receipt = tx.receipt; // the transaction receipt\n * const tokenId = tx.id; // the id of the NFT minted\n * const nft = await tx.data(); // (optional) fetch details of minted NFT\n * ```\n */\n async to(to, metadata) {\n const tx = await this.getMintTransaction(to, metadata);\n const {\n receipt\n } = await tx.execute();\n const event = this.contractWrapper.parseLogs(\"Transfer\", receipt?.logs);\n if (event.length === 0) {\n throw new Error(\"TransferEvent event not found\");\n }\n const id = event[0].args.tokenId;\n return {\n id,\n receipt,\n data: () => this.erc721.get(id)\n };\n }\n async getMintTransaction(to, metadata) {\n const uri = await uploadOrExtractURI(metadata, this.storage);\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"mintTo\",\n args: [to, uri]\n });\n }\n detectErc721BatchMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721BatchMintable\")) {\n return new Erc721BatchMintable(this.erc721, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n}\n\n/**\n * List owned ERC721 NFTs\n * @remarks Easily list all the NFTs from a ERC721 contract, owned by a certain wallet.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const walletAddress = \"0x...\";\n * const ownedNFTs = await contract.nft.query.owned.all(walletAddress);\n * ```\n * @public\n */\nclass Erc721Enumerable {\n constructor(erc721, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_ENUMERABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Get Owned NFTs\n *\n * @remarks Get all the data associated with the NFTs owned by a specific wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to get the NFTs of\n * const address = \"{{wallet_address}}\";\n * const nfts = await contract.nft.query.owned.all(address);\n * ```\n * @param walletAddress - the wallet address to query, defaults to the connected wallet\n * @returns The NFT metadata for all NFTs in the contract.\n */\n async all(walletAddress) {\n const tokenIds = await this.tokenIds(walletAddress);\n return await Promise.all(tokenIds.map(tokenId => this.erc721.get(tokenId.toString())));\n }\n\n /**\n * Get all token ids of NFTs owned by a specific wallet.\n * @param walletAddress - the wallet address to query, defaults to the connected wallet\n */\n async tokenIds(walletAddress) {\n const address = walletAddress || (await this.contractWrapper.getSignerAddress());\n const balance = await this.contractWrapper.readContract.balanceOf(address);\n const indices = Array.from(Array(balance.toNumber()).keys());\n return await Promise.all(indices.map(i => this.contractWrapper.readContract.tokenOfOwnerByIndex(address, i)));\n }\n}\n\n/**\n * List ERC721 NFTs\n * @remarks Easily list all the NFTs in a ERC721 contract.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const nfts = await contract.nft.query.all();\n * ```\n * @public\n */\nclass Erc721Supply {\n constructor(erc721, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_SUPPLY.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"owned\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n this.owned = this.detectErc721Owned();\n }\n\n /**\n * Get All Minted NFTs\n *\n * @remarks Get all the data associated with every NFT in this contract.\n *\n * By default, returns the first 100 NFTs, use queryParams to fetch more.\n *\n * @example\n * ```javascript\n * const nfts = await contract.nft.query.all();\n * ```\n * @param queryParams - optional filtering to only fetch a subset of results.\n * @returns The NFT metadata for all NFTs queried.\n */\n async all(queryParams) {\n const start = BigNumber.from(queryParams?.start || 0).toNumber();\n const count = BigNumber.from(queryParams?.count || DEFAULT_QUERY_ALL_COUNT).toNumber();\n const maxSupply = await this.erc721.nextTokenIdToMint();\n const maxId = Math.min(maxSupply.toNumber(), start + count);\n return await Promise.all([...Array(maxId - start).keys()].map(i => this.erc721.get((start + i).toString())));\n }\n\n /**\n * Return all the owners of each token id in this contract\n * @returns\n */\n async allOwners() {\n return Promise.all([...new Array((await this.totalCount()).toNumber()).keys()].map(async i => ({\n tokenId: i,\n owner: await this.erc721.ownerOf(i).catch(() => constants.AddressZero)\n })));\n }\n\n /**\n * Get the number of NFTs minted\n * @remarks This returns the total number of NFTs minted in this contract, **not** the total supply of a given token.\n *\n * @returns the total number of NFTs minted in this contract\n * @public\n */\n async totalCount() {\n return await this.erc721.nextTokenIdToMint();\n }\n\n /**\n * Get the number of NFTs of this contract currently owned by end users\n * @returns the total number of NFTs of this contract in circulation (minted & not burned)\n * @public\n */\n async totalCirculatingSupply() {\n return await this.contractWrapper.readContract.totalSupply();\n }\n detectErc721Owned() {\n if (detectContractFeature(this.contractWrapper, \"ERC721Enumerable\")) {\n return new Erc721Enumerable(this.erc721, this.contractWrapper);\n }\n return undefined;\n }\n}\n\n/**\n * @internal\n */\nconst TieredDropPayloadSchema = BaseSignaturePayloadInput.extend({\n tierPriority: z.array(z.string()),\n royaltyRecipient: z.string().default(constants.AddressZero),\n royaltyBps: BasisPointsSchema.default(0),\n quantity: BigNumberSchema.default(1)\n});\n\nclass Erc721TieredDrop {\n constructor(erc721, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_TIERED_DROP.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc721 = erc721;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n async getMetadataInTier(tier) {\n const tiers = await this.contractWrapper.readContract.getMetadataForAllTiers();\n const batches = tiers.find(t => t.tier === tier);\n if (!batches) {\n throw new Error(\"Tier not found in contract.\");\n }\n const nfts = await Promise.all(batches.ranges.map((range, i) => {\n const nftsInRange = [];\n const baseUri = batches.baseURIs[i];\n for (let j = range.startIdInclusive.toNumber(); j < range.endIdNonInclusive.toNumber(); j++) {\n const uri = `${baseUri}/${j}`;\n const metadata = this.storage.downloadJSON(uri);\n nftsInRange.push(metadata);\n }\n return nftsInRange;\n }).flat());\n return nfts;\n }\n async getTokensInTier(tier) {\n const endIndex = await this.contractWrapper.readContract.getTokensInTierLen();\n if (endIndex.eq(0)) {\n return [];\n }\n const ranges = await this.contractWrapper.readContract.getTokensInTier(tier, 0, endIndex);\n const nfts = await Promise.all(ranges.map(range => {\n const nftsInRange = [];\n for (let i = range.startIdInclusive.toNumber(); i < range.endIdNonInclusive.toNumber(); i++) {\n nftsInRange.push(this.erc721.get(i));\n }\n return nftsInRange;\n }).flat());\n return nfts;\n }\n async createBatchWithTier(metadatas, tier, options) {\n // TODO: Change this to on extension\n const startFileNumber = await this.erc721.nextTokenIdToMint();\n const batch = await uploadOrExtractURIs(metadatas, this.storage, startFileNumber.toNumber(), options);\n const baseUri = getBaseUriFromBatch(batch);\n const receipt = await this.contractWrapper.sendTransaction(\"lazyMint\", [batch.length, baseUri.endsWith(\"/\") ? baseUri : `${baseUri}/`, tier, ethers.utils.toUtf8Bytes(\"\")]);\n const event = this.contractWrapper.parseLogs(\"TokensLazyMinted\", receipt?.logs);\n const startingIndex = event[0].args[1];\n const endingIndex = event[0].args[2];\n const results = [];\n for (let id = startingIndex; id.lte(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc721.getTokenMetadata(id)\n });\n }\n return results;\n }\n async createDelayedRevealBatchWithTier(placeholder, metadatas, password, tier, options) {\n if (!password) {\n throw new Error(\"Password is required\");\n }\n const placeholderUris = await this.storage.uploadBatch([CommonNFTInput.parse(placeholder)], {\n rewriteFileNames: {\n fileStartNumber: 0\n }\n });\n const placeholderUri = getBaseUriFromBatch(placeholderUris);\n const startFileNumber = await this.erc721.nextTokenIdToMint();\n const uris = await this.storage.uploadBatch(metadatas.map(m => CommonNFTInput.parse(m)), {\n onProgress: options?.onProgress,\n rewriteFileNames: {\n fileStartNumber: startFileNumber.toNumber()\n }\n });\n const baseUri = getBaseUriFromBatch(uris);\n const baseUriId = await this.contractWrapper.readContract.getBaseURICount();\n const chainId = await this.contractWrapper.getChainID();\n const hashedPassword = ethers.utils.solidityKeccak256([\"string\", \"uint256\", \"uint256\", \"address\"], [password, chainId, baseUriId, this.contractWrapper.readContract.address]);\n const encryptedBaseUri = await this.contractWrapper.readContract.encryptDecrypt(ethers.utils.toUtf8Bytes(baseUri), hashedPassword);\n let data;\n const provenanceHash = ethers.utils.solidityKeccak256([\"bytes\", \"bytes\", \"uint256\"], [ethers.utils.toUtf8Bytes(baseUri), hashedPassword, chainId]);\n data = ethers.utils.defaultAbiCoder.encode([\"bytes\", \"bytes32\"], [encryptedBaseUri, provenanceHash]);\n const receipt = await this.contractWrapper.sendTransaction(\"lazyMint\", [uris.length, placeholderUri.endsWith(\"/\") ? placeholderUri : `${placeholderUri}/`, tier, data]);\n const event = this.contractWrapper.parseLogs(\"TokensLazyMinted\", receipt?.logs);\n const startingIndex = event[0].args[1];\n const endingIndex = event[0].args[2];\n const results = [];\n for (let id = startingIndex; id.lte(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc721.getTokenMetadata(id)\n });\n }\n return results;\n }\n async reveal(batchId, password) {\n if (!password) {\n throw new Error(\"Password is required\");\n }\n const chainId = await this.contractWrapper.getChainID();\n const key = ethers.utils.solidityKeccak256([\"string\", \"uint256\", \"uint256\", \"address\"], [password, chainId, batchId, this.contractWrapper.readContract.address]);\n // performing the reveal locally to make sure it'd succeed before sending the transaction\n try {\n const decryptedUri = await this.contractWrapper.callStatic().reveal(batchId, key);\n // basic sanity check for making sure decryptedUri is valid\n // this is optional because invalid decryption key would result in non-utf8 bytes and\n // ethers would throw when trying to decode it\n if (!decryptedUri.includes(\"://\") || !decryptedUri.endsWith(\"/\")) {\n throw new Error(\"invalid password\");\n }\n } catch (e) {\n throw new Error(\"invalid password\");\n }\n return {\n receipt: await this.contractWrapper.sendTransaction(\"reveal\", [batchId, key])\n };\n }\n async generate(payloadToSign) {\n const [payload] = await this.generateBatch([payloadToSign]);\n return payload;\n }\n async generateBatch(payloadsToSign) {\n const parsedPayloads = payloadsToSign.map(payload => TieredDropPayloadSchema.parse(payload));\n const chainId = await this.contractWrapper.getChainID();\n const signer = this.contractWrapper.getSigner();\n invariant(signer, \"No signer available\");\n return await Promise.all(parsedPayloads.map(async payload => {\n const signature = await this.contractWrapper.signTypedData(signer, {\n name: \"SignatureAction\",\n version: \"1\",\n chainId,\n verifyingContract: this.contractWrapper.readContract.address\n }, {\n GenericRequest: GenericRequest\n }, await this.mapPayloadToContractStruct(payload));\n return {\n payload,\n signature: signature.toString()\n };\n }));\n }\n async verify(signedPayload) {\n const message = await this.mapPayloadToContractStruct(signedPayload.payload);\n const verification = await this.contractWrapper.readContract.verify(message, signedPayload.signature);\n return verification[0];\n }\n async claimWithSignature(signedPayload) {\n const message = await this.mapPayloadToContractStruct(signedPayload.payload);\n const pricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), signedPayload.payload.price, signedPayload.payload.currencyAddress);\n const price = pricePerToken.mul(signedPayload.payload.quantity);\n const overrides = await this.contractWrapper.getCallOverrides();\n await setErc20Allowance(this.contractWrapper, price, signedPayload.payload.currencyAddress, overrides);\n const receipt = await this.contractWrapper.sendTransaction(\"claimWithSignature\", [message, signedPayload.signature], overrides);\n const event = this.contractWrapper.parseLogs(\"TokensClaimed\", receipt?.logs);\n const startingIndex = event[0].args.startTokenId;\n const endingIndex = startingIndex.add(event[0].args.quantityClaimed);\n const results = [];\n for (let id = startingIndex; id.lt(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc721.get(id)\n });\n }\n return results;\n }\n async mapPayloadToContractStruct(payload) {\n const normalizedPricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), payload.price, payload.currencyAddress);\n const data = ethers.utils.defaultAbiCoder.encode([\"string[]\", \"address\", \"address\", \"uint256\", \"address\", \"uint256\", \"uint256\", \"address\"], [payload.tierPriority, payload.to, payload.royaltyRecipient, payload.royaltyBps, payload.primarySaleRecipient, payload.quantity, normalizedPricePerToken, payload.currencyAddress]);\n return {\n uid: payload.uid,\n validityStartTimestamp: payload.mintStartTime,\n validityEndTimestamp: payload.mintEndTime,\n data\n };\n }\n}\n\n/**\n * Enables generating dynamic ERC721 NFTs with rules and an associated signature, which can then be minted by anyone securely\n * @public\n */\nclass Erc721WithQuantitySignatureMintable {\n constructor(contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_NFT_SIGNATURE_MINTABLE_V2.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n\n /**\n * Mint a dynamically generated NFT\n *\n * @remarks Mint a dynamic NFT with a previously generated signature.\n *\n * @example\n * ```javascript\n * // see how to craft a payload to sign in the `generate()` documentation\n * const signedPayload = contract.erc721.signature.generate(payload);\n *\n * // now anyone can mint the NFT\n * const tx = contract.erc721.signature.mint(signedPayload);\n * const receipt = tx.receipt; // the mint transaction receipt\n * const mintedId = tx.id; // the id of the NFT minted\n * ```\n * @param signedPayload - the previously generated payload and signature with {@link Erc721WithQuantitySignatureMintable.generate}\n * @twfeature ERC721SignatureMint\n */\n async mint(signedPayload) {\n const mintRequest = signedPayload.payload;\n const signature = signedPayload.signature;\n const isLegacyNFTContract = await this.isLegacyNFTContract();\n let message;\n let price;\n if (isLegacyNFTContract) {\n message = await this.mapLegacyPayloadToContractStruct(mintRequest);\n price = message.price;\n } else {\n message = await this.mapPayloadToContractStruct(mintRequest);\n price = message.pricePerToken.mul(message.quantity);\n }\n const overrides = await this.contractWrapper.getCallOverrides();\n await setErc20Allowance(this.contractWrapper, price, mintRequest.currencyAddress, overrides);\n const receipt = await this.contractWrapper.sendTransaction(\"mintWithSignature\", [message, signature], overrides);\n const t = this.contractWrapper.parseLogs(\"TokensMintedWithSignature\", receipt.logs);\n if (t.length === 0) {\n throw new Error(\"No MintWithSignature event found\");\n }\n const id = t[0].args.tokenIdMinted;\n return {\n id,\n receipt\n };\n }\n\n /**\n * Mint any number of dynamically generated NFT at once\n * @remarks Mint multiple dynamic NFTs in one transaction. Note that this is only possible for free mints (cannot batch mints with a price attached to it for security reasons)\n * @param signedPayloads - the array of signed payloads to mint\n * @twfeature ERC721SignatureMint\n */\n async mintBatch(signedPayloads) {\n const isLegacyNFTContract = await this.isLegacyNFTContract();\n const contractPayloads = await Promise.all(signedPayloads.map(async s => {\n let message;\n if (isLegacyNFTContract) {\n message = await this.mapLegacyPayloadToContractStruct(s.payload);\n } else {\n message = await this.mapPayloadToContractStruct(s.payload);\n }\n const signature = s.signature;\n const price = s.payload.price;\n if (BigNumber.from(price).gt(0)) {\n throw new Error(\"Can only batch free mints. For mints with a price, use regular mint()\");\n }\n return {\n message,\n signature\n };\n }));\n const encoded = contractPayloads.map(p => {\n if (isLegacyNFTContract) {\n const contract = this.contractWrapper.readContract;\n return contract.interface.encodeFunctionData(\"mintWithSignature\", [p.message, p.signature]);\n } else {\n const contract = this.contractWrapper.readContract;\n return contract.interface.encodeFunctionData(\"mintWithSignature\", [p.message, p.signature]);\n }\n });\n const receipt = await this.contractWrapper.multiCall(encoded);\n const events = this.contractWrapper.parseLogs(\"TokensMintedWithSignature\", receipt.logs);\n if (events.length === 0) {\n throw new Error(\"No MintWithSignature event found\");\n }\n return events.map(log => ({\n id: log.args.tokenIdMinted,\n receipt\n }));\n }\n\n /**\n * Verify that a payload is correctly signed\n * @param signedPayload - the payload to verify\n * @twfeature ERC721SignatureMint\n *\n * @example\n * ```javascript\n * const nftMetadata = {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * metadata: nftMetadata, // The NFT to mint\n * to: {{wallet_address}}, // Who will receive the NFT\n * quantity: 2, // the quantity of NFTs to mint\n * price: 0.5, // the price per NFT\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now\n * royaltyRecipient: \"0x...\", // custom royalty recipient for this NFT\n * royaltyBps: 100, // custom royalty fees for this NFT (in bps)\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this NFT\n * };\n *\n * const signedPayload = await contract.erc721.signature.generate(payload);\n * // Now you can verify if the signed payload is valid\n * const isValid = await contract.erc721.signature.verify(signedPayload);\n * ```\n */\n async verify(signedPayload) {\n const isLegacyNFTContract = await this.isLegacyNFTContract();\n const mintRequest = signedPayload.payload;\n const signature = signedPayload.signature;\n let message;\n let verification;\n if (isLegacyNFTContract) {\n const contract = this.contractWrapper.readContract;\n message = await this.mapLegacyPayloadToContractStruct(mintRequest);\n verification = await contract.verify(message, signature);\n } else {\n const contract = this.contractWrapper.readContract;\n message = await this.mapPayloadToContractStruct(mintRequest);\n verification = await contract.verify(message, signature);\n }\n return verification[0];\n }\n\n /**\n * Generate a signature that can be used to mint a dynamic NFT\n *\n * @remarks Takes in an NFT and some information about how it can be minted, uploads the metadata and signs it with your private key. The generated signature can then be used to mint an NFT using the exact payload and signature generated.\n *\n * @example\n * ```javascript\n * const nftMetadata = {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * metadata: nftMetadata, // The NFT to mint\n * to: {{wallet_address}}, // Who will receive the NFT\n * quantity: 2, // the quantity of NFTs to mint\n * price: 0.5, // the price per NFT\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now\n * royaltyRecipient: \"0x...\", // custom royalty recipient for this NFT\n * royaltyBps: 100, // custom royalty fees for this NFT (in bps)\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this NFT\n * };\n *\n * const signedPayload = await contract.erc721.signature.generate(payload);\n * // now anyone can use these to mint the NFT using `contract.erc721.signature.mint(signedPayload)`\n * ```\n * @param mintRequest - the payload to sign\n * @returns the signed payload and the corresponding signature\n * @twfeature ERC721SignatureMint\n */\n async generate(mintRequest) {\n return (await this.generateBatch([mintRequest]))[0];\n }\n\n /**\n * Genrate a batch of signatures that can be used to mint many dynamic NFTs.\n *\n * @remarks See {@link Erc721WithQuantitySignatureMintable.generate}\n *\n * @param payloadsToSign - the payloads to sign\n * @returns an array of payloads and signatures\n * @twfeature ERC721SignatureMint\n */\n async generateBatch(payloadsToSign) {\n const isLegacyNFTContract = await this.isLegacyNFTContract();\n const parsedRequests = payloadsToSign.map(m => Signature721WithQuantityInput.parse(m));\n const metadatas = parsedRequests.map(r => r.metadata);\n const uris = await uploadOrExtractURIs(metadatas, this.storage);\n const chainId = await this.contractWrapper.getChainID();\n const signer = this.contractWrapper.getSigner();\n invariant(signer, \"No signer available\");\n return await Promise.all(parsedRequests.map(async (m, i) => {\n const uri = uris[i];\n const finalPayload = Signature721WithQuantityOutput.parse({\n ...m,\n uri\n });\n let signature;\n if (isLegacyNFTContract) {\n signature = await this.contractWrapper.signTypedData(signer, {\n name: \"TokenERC721\",\n version: \"1\",\n chainId,\n verifyingContract: this.contractWrapper.readContract.address\n }, {\n MintRequest: MintRequest721\n }, await this.mapLegacyPayloadToContractStruct(finalPayload));\n } else {\n signature = await this.contractWrapper.signTypedData(signer, {\n name: \"SignatureMintERC721\",\n version: \"1\",\n chainId,\n verifyingContract: await this.contractWrapper.readContract.address\n }, {\n MintRequest: MintRequest721withQuantity\n },\n // TYPEHASH\n await this.mapPayloadToContractStruct(finalPayload));\n }\n return {\n payload: finalPayload,\n signature: signature.toString()\n };\n }));\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * Maps a payload to the format expected by the contract\n *\n * @internal\n *\n * @param mintRequest - The payload to map.\n * @returns - The mapped payload.\n */\n async mapPayloadToContractStruct(mintRequest) {\n const normalizedPricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), mintRequest.price, mintRequest.currencyAddress);\n return {\n to: mintRequest.to,\n royaltyRecipient: mintRequest.royaltyRecipient,\n royaltyBps: mintRequest.royaltyBps,\n primarySaleRecipient: mintRequest.primarySaleRecipient,\n uri: mintRequest.uri,\n quantity: mintRequest.quantity,\n pricePerToken: normalizedPricePerToken,\n currency: mintRequest.currencyAddress,\n validityStartTimestamp: mintRequest.mintStartTime,\n validityEndTimestamp: mintRequest.mintEndTime,\n uid: mintRequest.uid\n };\n }\n async mapLegacyPayloadToContractStruct(mintRequest) {\n const normalizedPricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), mintRequest.price, mintRequest.currencyAddress);\n return {\n to: mintRequest.to,\n price: normalizedPricePerToken,\n uri: mintRequest.uri,\n currency: mintRequest.currencyAddress,\n validityEndTimestamp: mintRequest.mintEndTime,\n validityStartTimestamp: mintRequest.mintStartTime,\n uid: mintRequest.uid,\n royaltyRecipient: mintRequest.royaltyRecipient,\n royaltyBps: mintRequest.royaltyBps,\n primarySaleRecipient: mintRequest.primarySaleRecipient\n };\n }\n async isLegacyNFTContract() {\n return detectContractFeature(this.contractWrapper, \"ERC721SignatureMintV1\");\n }\n}\n\n/**\n * Standard ERC721 NFT functions\n * @remarks Basic functionality for a ERC721 contract that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.erc721.transfer(walletAddress, tokenId);\n * ```\n * @public\n */\nclass Erc721 {\n get chainId() {\n return this._chainId;\n }\n constructor(contractWrapper, storage, chainId) {\n _defineProperty(this, \"featureName\", FEATURE_NFT.name);\n _defineProperty(this, \"query\", void 0);\n _defineProperty(this, \"mintable\", void 0);\n _defineProperty(this, \"burnable\", void 0);\n _defineProperty(this, \"lazyMintable\", void 0);\n _defineProperty(this, \"tieredDropable\", void 0);\n _defineProperty(this, \"signatureMintable\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.query = this.detectErc721Enumerable();\n this.mintable = this.detectErc721Mintable();\n this.burnable = this.detectErc721Burnable();\n this.lazyMintable = this.detectErc721LazyMintable();\n this.tieredDropable = this.detectErc721TieredDrop();\n this.signatureMintable = this.detectErc721SignatureMintable();\n this._chainId = chainId;\n }\n\n /**\n * @internal\n */\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n ////// Standard ERC721 Extension //////\n\n /**\n * Get a single NFT Metadata\n *\n * @example\n * ```javascript\n * const tokenId = 0;\n * const nft = await contract.erc721.get(tokenId);\n * ```\n * @param tokenId - the tokenId of the NFT to retrieve\n * @returns The NFT metadata\n * @twfeature ERC721\n */\n async get(tokenId) {\n const [owner, metadata] = await Promise.all([this.ownerOf(tokenId).catch(() => constants.AddressZero), this.getTokenMetadata(tokenId).catch(() => ({\n id: tokenId.toString(),\n uri: \"\",\n ...FALLBACK_METADATA\n }))]);\n return {\n owner,\n metadata,\n type: \"ERC721\",\n supply: 1\n };\n }\n\n /**\n * Get the current owner of a given NFT within this Contract\n *\n * @param tokenId - the tokenId of the NFT\n * @returns the address of the owner\n * @twfeature ERC721\n */\n async ownerOf(tokenId) {\n return await this.contractWrapper.readContract.ownerOf(tokenId);\n }\n\n /**\n * Get NFT Balance\n *\n * @remarks Get a wallets NFT balance (number of NFTs in this contract owned by the wallet).\n *\n * @example\n * ```javascript\n * const walletAddress = \"{{wallet_address}}\";\n * const balance = await contract.erc721.balanceOf(walletAddress);\n * console.log(balance);\n * ```\n * @twfeature ERC721\n */\n async balanceOf(address) {\n return await this.contractWrapper.readContract.balanceOf(address);\n }\n\n /**\n * Get NFT Balance for the currently connected wallet\n */\n async balance() {\n return await this.balanceOf(await this.contractWrapper.getSignerAddress());\n }\n\n /**\n * Get whether this wallet has approved transfers from the given operator\n * @param address - the wallet address\n * @param operator - the operator address\n */\n async isApproved(address, operator) {\n return await this.contractWrapper.readContract.isApprovedForAll(address, operator);\n }\n\n /**\n * Transfer a single NFT\n *\n * @remarks Transfer an NFT from the connected wallet to another wallet.\n *\n * @example\n * ```javascript\n * const walletAddress = \"{{wallet_address}}\";\n * const tokenId = 0;\n * await contract.erc721.transfer(walletAddress, tokenId);\n * ```\n * @twfeature ERC721\n */\n async transfer(to, tokenId) {\n const from = await this.contractWrapper.getSignerAddress();\n return {\n receipt: await this.contractWrapper.sendTransaction(\"safeTransferFrom(address,address,uint256)\", [from, to, tokenId])\n };\n }\n\n /**\n * Approve or remove operator as an operator for the caller. Operators can call transferFrom or safeTransferFrom for any token owned by the caller.\n * @param operator - the operator's address\n * @param approved - whether to approve or remove\n *\n * @internal\n */\n async setApprovalForAll(operator, approved) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setApprovalForAll\", [operator, approved])\n };\n }\n\n /**\n * Approve an operator for the NFT owner. Operators can call transferFrom or safeTransferFrom for the specified token.\n * @param operator - the operator's address\n * @param tokenId - the tokenId to give approval for\n *\n * @internal\n */\n async setApprovalForToken(operator, tokenId) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"approve\", [operator, tokenId])\n };\n }\n\n ////// ERC721 Supply Extension //////\n\n /**\n * Get All Minted NFTs\n *\n * @remarks Get all the data associated with every NFT in this contract.\n *\n * By default, returns the first 100 NFTs, use queryParams to fetch more.\n *\n * @example\n * ```javascript\n * const nfts = await contract.erc721.getAll();\n * console.log(nfts);\n * ```\n * @param queryParams - optional filtering to only fetch a subset of results.\n * @returns The NFT metadata for all NFTs queried.\n * @twfeature ERC721Supply\n */\n async getAll(queryParams) {\n return assertEnabled(this.query, FEATURE_NFT_SUPPLY).all(queryParams);\n }\n\n /**\n * Get All owners of minted NFTs on this contract\n * @returns an array of token ids and owners\n * @twfeature ERC721Supply\n */\n async getAllOwners() {\n return assertEnabled(this.query, FEATURE_NFT_SUPPLY).allOwners();\n }\n\n /**\n * Get the number of NFTs minted\n * @remarks This returns the total number of NFTs minted in this contract, **not** the total supply of a given token.\n *\n * @returns the total number of NFTs minted in this contract\n * @public\n */\n async totalCount() {\n return this.nextTokenIdToMint();\n }\n\n /**\n * Get the total count NFTs minted in this contract\n */\n async totalCirculatingSupply() {\n return assertEnabled(this.query, FEATURE_NFT_SUPPLY).totalCirculatingSupply();\n }\n\n ////// ERC721 Enumerable Extension //////\n\n /**\n * Get Owned NFTs\n *\n * @remarks Get all the data associated with the NFTs owned by a specific wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to get the NFTs of\n * const address = \"{{wallet_address}}\";\n * const nfts = await contract.erc721.getOwned(address);\n * console.log(nfts);\n * ```\n * @param walletAddress - the wallet address to query, defaults to the connected wallet\n * @returns The NFT metadata for all NFTs in the contract.\n * @twfeature ERC721Enumerable\n */\n async getOwned(walletAddress) {\n if (this.query?.owned) {\n return this.query.owned.all(walletAddress);\n } else {\n const address = walletAddress || (await this.contractWrapper.getSignerAddress());\n const allOwners = await this.getAllOwners();\n return Promise.all((allOwners || []).filter(i => address?.toLowerCase() === i.owner?.toLowerCase()).map(async i => await this.get(i.tokenId)));\n }\n }\n\n /**\n * Get all token ids of NFTs owned by a specific wallet.\n * @param walletAddress - the wallet address to query, defaults to the connected wallet\n */\n async getOwnedTokenIds(walletAddress) {\n if (this.query?.owned) {\n return this.query.owned.tokenIds(walletAddress);\n } else {\n const address = walletAddress || (await this.contractWrapper.getSignerAddress());\n const allOwners = await this.getAllOwners();\n return (allOwners || []).filter(i => address?.toLowerCase() === i.owner?.toLowerCase()).map(i => BigNumber.from(i.tokenId));\n }\n }\n\n ////// ERC721 Mintable Extension //////\n\n /**\n * Mint a unique NFT\n *\n * @remarks Mint a unique NFT to the connected wallet.\n *\n * @example\n * ```javascript\n * // Custom metadata of the NFT, note that you can fully customize this metadata with other properties.\n * const metadata = {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const tx = await contract.erc721.mint(metadata);\n * const receipt = tx.receipt; // the transaction receipt\n * const tokenId = tx.id; // the id of the NFT minted\n * const nft = await tx.data(); // (optional) fetch details of minted NFT\n * ```\n * @twfeature ERC721Mintable\n */\n async mint(metadata) {\n return this.mintTo(await this.contractWrapper.getSignerAddress(), metadata);\n }\n\n /**\n * Mint a unique NFT\n *\n * @remarks Mint a unique NFT to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const walletAddress = \"{{wallet_address}}\";\n *\n * // Custom metadata of the NFT, note that you can fully customize this metadata with other properties.\n * const metadata = {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const tx = await contract.erc721.mintTo(walletAddress, metadata);\n * const receipt = tx.receipt; // the transaction receipt\n * const tokenId = tx.id; // the id of the NFT minted\n * const nft = await tx.data(); // (optional) fetch details of minted NFT\n * ```\n * @twfeature ERC721Mintable\n */\n async mintTo(receiver, metadata) {\n return assertEnabled(this.mintable, FEATURE_NFT_MINTABLE).to(receiver, metadata);\n }\n\n /**\n * Construct a mint transaction without executing it.\n * This is useful for estimating the gas cost of a mint transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param receiver - Address you want to send the token to\n * @param metadata - The metadata of the NFT you want to mint\n */\n async getMintTransaction(receiver, metadata) {\n return assertEnabled(this.mintable, FEATURE_NFT_MINTABLE).getMintTransaction(receiver, metadata);\n }\n\n ////// ERC721 Batch Mintable Extension //////\n\n /**\n * Mint Many unique NFTs\n *\n * @remarks Mint many unique NFTs at once to the connected wallet\n *\n * @example\n * ```javascript*\n * // Custom metadata of the NFTs you want to mint.\n * const metadatas = [{\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT #2\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/other/image.png\"),\n * }];\n *\n * const tx = await contract.erc721.mintBatch(metadatas);\n * const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs\n * const firstTokenId = tx[0].id; // token id of the first minted NFT\n * const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT\n * ```\n * @twfeature ERC721BatchMintable\n */\n async mintBatch(metadatas) {\n return this.mintBatchTo(await this.contractWrapper.getSignerAddress(), metadatas);\n }\n\n /**\n * Mint Many unique NFTs\n *\n * @remarks Mint many unique NFTs at once to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const walletAddress = \"{{wallet_address}}\";\n *\n * // Custom metadata of the NFTs you want to mint.\n * const metadatas = [{\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT #2\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/other/image.png\"),\n * }];\n *\n * const tx = await contract.erc721.mintBatchTo(walletAddress, metadatas);\n * const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs\n * const firstTokenId = tx[0].id; // token id of the first minted NFT\n * const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT\n * ```\n * @twfeature ERC721BatchMintable\n */\n async mintBatchTo(receiver, metadatas) {\n return assertEnabled(this.mintable?.batch, FEATURE_NFT_BATCH_MINTABLE).to(receiver, metadatas);\n }\n\n ////// ERC721 Burnable Extension //////\n\n /**\n * Burn a single NFT\n * @param tokenId - the token Id to burn\n *\n * @example\n * ```javascript\n * const result = await contract.erc721.burn(tokenId);\n * ```\n * @twfeature ERC721Burnable\n */\n async burn(tokenId) {\n return assertEnabled(this.burnable, FEATURE_NFT_BURNABLE).token(tokenId);\n }\n\n ////// ERC721 LazyMint Extension //////\n\n /**\n * Create a batch of unique NFTs to be claimed in the future\n *\n * @remarks Create batch allows you to create a batch of many unique NFTs in one transaction.\n *\n * @example\n * ```javascript\n * // Custom metadata of the NFTs to create\n * const metadatas = [{\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n *\n * const results = await contract.erc721.lazyMint(metadatas); // uploads and creates the NFTs on chain\n * const firstTokenId = results[0].id; // token id of the first created NFT\n * const firstNFT = await results[0].data(); // (optional) fetch details of the first created NFT\n * ```\n *\n * @param metadatas - The metadata to include in the batch.\n * @param options - optional upload progress callback\n * @twfeature ERC721LazyMintable\n */\n async lazyMint(metadatas, options) {\n return assertEnabled(this.lazyMintable, FEATURE_NFT_LAZY_MINTABLE).lazyMint(metadatas, options);\n }\n\n ////// ERC721 Claimable Extension //////\n\n /**\n * Claim unique NFTs to the connected wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const quantity = 1; // how many unique NFTs you want to claim\n *\n * const tx = await contract.erc721.claim(quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * const claimedTokenId = tx.id; // the id of the NFT claimed\n * const claimedNFT = await tx.data(); // (optional) get the claimed NFT metadata\n * ```\n *\n * @param quantity - Quantity of the tokens you want to claim\n *\n * @returns - an array of results containing the id of the token claimed, the transaction receipt and a promise to optionally fetch the nft metadata\n * @twfeature ERC721Claimable\n */\n async claim(quantity, options) {\n return this.claimTo(await this.contractWrapper.getSignerAddress(), quantity, options);\n }\n\n /**\n * Claim unique NFTs to a specific Wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const quantity = 1; // how many unique NFTs you want to claim\n *\n * const tx = await contract.erc721.claimTo(address, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * const claimedTokenId = tx.id; // the id of the NFT claimed\n * const claimedNFT = await tx.data(); // (optional) get the claimed NFT metadata\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param quantity - Quantity of the tokens you want to claim\n * @param options\n * @twfeature ERC721Claimable\n * @returns - an array of results containing the id of the token claimed, the transaction receipt and a promise to optionally fetch the nft metadata\n */\n async claimTo(destinationAddress, quantity, options) {\n const claimWithConditions = this.lazyMintable?.claimWithConditions;\n const claim = this.lazyMintable?.claim;\n if (claimWithConditions) {\n return claimWithConditions.to(destinationAddress, quantity, options);\n }\n if (claim) {\n return claim.to(destinationAddress, quantity, options);\n }\n throw new ExtensionNotImplementedError(FEATURE_NFT_CLAIM_CUSTOM);\n }\n\n /**\n * Construct a claim transaction without executing it.\n * This is useful for estimating the gas cost of a claim transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param destinationAddress\n * @param quantity\n * @param options\n */\n async getClaimTransaction(destinationAddress, quantity, options) {\n const claimWithConditions = this.lazyMintable?.claimWithConditions;\n const claim = this.lazyMintable?.claim;\n if (claimWithConditions) {\n return claimWithConditions.conditions.getClaimTransaction(destinationAddress, quantity, options);\n }\n if (claim) {\n return claim.getClaimTransaction(destinationAddress, quantity, options);\n }\n throw new ExtensionNotImplementedError(FEATURE_NFT_CLAIM_CUSTOM);\n }\n async totalClaimedSupply() {\n const contract = this.contractWrapper;\n if (hasFunction(\"nextTokenIdToClaim\", contract)) {\n return contract.readContract.nextTokenIdToClaim();\n }\n if (hasFunction(\"totalMinted\", contract)) {\n return contract.readContract.totalMinted();\n }\n throw new Error(\"No function found on contract to get total claimed supply\");\n }\n\n /**\n * Get the unclaimed supply\n *\n * @remarks Get the number of unclaimed NFTs in this Drop.\n *\n * * @example\n * ```javascript\n * const unclaimedNFTCount = await contract.totalUnclaimedSupply();\n * console.log(`NFTs left to claim: ${unclaimedNFTCount}`);\n * ```\n * @returns the unclaimed supply\n */\n async totalUnclaimedSupply() {\n return (await this.nextTokenIdToMint()).sub(await this.totalClaimedSupply());\n }\n\n /**\n * Configure claim conditions\n * @remarks Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n * await contract.erc721.claimConditions.set(claimConditions);\n * ```\n * @twfeature ERC721ClaimableWithConditions\n */\n get claimConditions() {\n return assertEnabled(this.lazyMintable?.claimWithConditions, FEATURE_NFT_CLAIM_CONDITIONS_V2).conditions;\n }\n\n ////// ERC721 Tiered Drop Extension //////\n\n /**\n * Tiered Drop\n * @remarks Drop lazy minted NFTs using a tiered drop mechanism.\n */\n get tieredDrop() {\n return assertEnabled(this.tieredDropable, FEATURE_NFT_TIERED_DROP);\n }\n\n ////// ERC721 SignatureMint Extension //////\n\n /**\n * Signature Minting\n * @remarks Generate dynamic NFTs with your own signature, and let others mint them using that signature.\n * @example\n * ```javascript\n * // see how to craft a payload to sign in the `contract.erc721.signature.generate()` documentation\n * const signedPayload = contract.erc721.signature().generate(payload);\n *\n * // now anyone can mint the NFT\n * const tx = contract.erc721.signature.mint(signedPayload);\n * const receipt = tx.receipt; // the mint transaction receipt\n * const mintedId = tx.id; // the id of the NFT minted\n * ```\n * @twfeature ERC721SignatureMint\n */\n get signature() {\n return assertEnabled(this.signatureMintable, FEATURE_NFT_SIGNATURE_MINTABLE_V2);\n }\n\n ////// ERC721 DelayedReveal Extension //////\n\n /**\n * Delayed reveal\n * @remarks Create a batch of encrypted NFTs that can be revealed at a later time.\n * @example\n * ```javascript\n * // the real NFTs, these will be encrypted until you reveal them\n * const realNFTs = [{\n * name: \"Common NFT #1\",\n * description: \"Common NFT, one of many.\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }, {\n * name: \"Super Rare NFT #2\",\n * description: \"You got a Super Rare NFT!\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n * // A placeholder NFT that people will get immediately in their wallet, and will be converted to the real NFT at reveal time\n * const placeholderNFT = {\n * name: \"Hidden NFT\",\n * description: \"Will be revealed next week!\"\n * };\n * // Create and encrypt the NFTs\n * await contract.erc721.revealer.createDelayedRevealBatch(\n * placeholderNFT,\n * realNFTs,\n * \"my secret password\",\n * );\n * // Whenever you're ready, reveal your NFTs at any time\n * const batchId = 0; // the batch to reveal\n * await contract.erc721.revealer.reveal(batchId, \"my secret password\");\n * ```\n * @twfeature ERC721Revealable\n */\n get revealer() {\n return assertEnabled(this.lazyMintable?.revealer, FEATURE_NFT_REVEALABLE);\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * @internal\n */\n async getTokenMetadata(tokenId) {\n const tokenUri = await this.contractWrapper.readContract.tokenURI(tokenId);\n if (!tokenUri) {\n throw new NotFoundError();\n }\n return fetchTokenMetadata(tokenId, tokenUri, this.storage);\n }\n\n /**\n * Return the next available token ID to mint\n * @internal\n */\n async nextTokenIdToMint() {\n if (hasFunction(\"nextTokenIdToMint\", this.contractWrapper)) {\n return await this.contractWrapper.readContract.nextTokenIdToMint();\n } else if (hasFunction(\"totalSupply\", this.contractWrapper)) {\n return await this.contractWrapper.readContract.totalSupply();\n } else {\n throw new Error(\"Contract requires either `nextTokenIdToMint` or `totalSupply` function available to determine the next token ID to mint\");\n }\n }\n detectErc721Enumerable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721Supply\") || hasFunction(\"nextTokenIdToMint\", this.contractWrapper)) {\n return new Erc721Supply(this, this.contractWrapper);\n }\n return undefined;\n }\n detectErc721Mintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721Mintable\")) {\n return new Erc721Mintable(this, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc721Burnable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721Burnable\")) {\n return new Erc721Burnable(this.contractWrapper);\n }\n return undefined;\n }\n detectErc721LazyMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721LazyMintable\")) {\n return new Erc721LazyMintable(this, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc721TieredDrop() {\n if (detectContractFeature(this.contractWrapper, \"ERC721TieredDrop\")) {\n return new Erc721TieredDrop(this, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc721SignatureMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC721SignatureMintV1\") || detectContractFeature(this.contractWrapper, \"ERC721SignatureMintV2\")) {\n return new Erc721WithQuantitySignatureMintable(this.contractWrapper, this.storage);\n }\n return undefined;\n }\n}\n\n/**\n * Standard ERC721 NFT functions\n * @remarks Basic functionality for a ERC721 contract that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.nft.transfer(walletAddress, tokenId);\n * ```\n * @public\n */\nclass StandardErc721 {\n get chainId() {\n return this._chainId;\n }\n constructor(contractWrapper, storage, chainId) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"erc721\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.erc721 = new Erc721(this.contractWrapper, this.storage, chainId);\n this._chainId = chainId;\n }\n\n /**\n * @internal\n */\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n /**\n * Get All Minted NFTs\n *\n * @remarks Get all the data associated with every NFT in this contract.\n *\n * By default, returns the first 100 NFTs, use queryParams to fetch more.\n *\n * @example\n * ```javascript\n * const nfts = await contract.getAll();\n * console.log(nfts);\n * ```\n * @param queryParams - optional filtering to only fetch a subset of results.\n * @returns The NFT metadata for all NFTs queried.\n */\n async getAll(queryParams) {\n return this.erc721.getAll(queryParams);\n }\n\n /**\n * Get Owned NFTs\n *\n * @remarks Get all the data associated with the NFTs owned by a specific wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to get the NFTs of\n * const address = \"{{wallet_address}}\";\n * const nfts = await contract.getOwned(address);\n * console.log(nfts);\n * ```\n * @param walletAddress - the wallet address to query, defaults to the connected wallet\n * @returns The NFT metadata for all NFTs in the contract.\n */\n async getOwned(walletAddress) {\n return this.erc721.getOwned(walletAddress);\n }\n\n /**\n * Get Owned Token Ids\n * @remarks Get all the token ids of NFTs owned by a specific wallet (no metadata)\n */\n async getOwnedTokenIds(walletAddress) {\n return this.erc721.getOwnedTokenIds(walletAddress);\n }\n\n /**\n * Get the total count NFTs minted in this contract\n */\n async totalSupply() {\n return this.erc721.totalCirculatingSupply();\n }\n\n /**\n * Get a single NFT Metadata\n *\n * @example\n * ```javascript\n * const tokenId = 0;\n * const nft = await contract.get(tokenId);\n * ```\n * @param tokenId - the tokenId of the NFT to retrieve\n * @returns The NFT metadata\n */\n async get(tokenId) {\n return this.erc721.get(tokenId);\n }\n\n /**\n * Get the current owner of a given NFT within this Contract\n *\n * @param tokenId - the tokenId of the NFT\n * @returns the address of the owner\n */\n async ownerOf(tokenId) {\n return this.erc721.ownerOf(tokenId);\n }\n\n /**\n * Get NFT Balance\n *\n * @remarks Get a wallets NFT balance (number of NFTs in this contract owned by the wallet).\n *\n * @example\n * ```javascript\n * const walletAddress = \"{{wallet_address}}\";\n * const balance = await contract.balanceOf(walletAddress);\n * console.log(balance);\n * ```\n */\n async balanceOf(address) {\n return this.erc721.balanceOf(address);\n }\n\n /**\n * Get NFT Balance for the currently connected wallet\n */\n async balance() {\n return this.erc721.balance();\n }\n\n /**\n * Get whether this wallet has approved transfers from the given operator\n * @param address - the wallet address\n * @param operator - the operator address\n */\n async isApproved(address, operator) {\n return this.erc721.isApproved(address, operator);\n }\n\n /**\n * Transfer a single NFT\n *\n * @remarks Transfer an NFT from the connected wallet to another wallet.\n *\n * @example\n * ```javascript\n * const walletAddress = \"{{wallet_address}}\";\n * const tokenId = 0;\n * await contract.transfer(walletAddress, tokenId);\n * ```\n */\n async transfer(to, tokenId) {\n return this.erc721.transfer(to, tokenId);\n }\n\n /**\n * Approve or remove operator as an operator for the caller. Operators can call transferFrom or safeTransferFrom for any token owned by the caller.\n * @param operator - the operator's address\n * @param approved - whether to approve or remove\n *\n * @internal\n */\n async setApprovalForAll(operator, approved) {\n return this.erc721.setApprovalForAll(operator, approved);\n }\n\n /**\n * Approve an operator for the NFT owner. Operators can call transferFrom or safeTransferFrom for the specified token.\n * @param operator - the operator's address\n * @param tokenId - the tokenId to give approval for\n *\n * @internal\n */\n async setApprovalForToken(operator, tokenId) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"approve\", [operator, tokenId])\n };\n }\n}\n\n/**\n * @internal\n */\nconst AirdropAddressInput = z.object({\n address: AddressSchema,\n quantity: AmountSchema.default(1)\n});\n\n/**\n * @internal\n */\nconst AirdropInputSchema = z.union([z.array(z.string()).transform(strings => strings.map(address => AirdropAddressInput.parse({\n address\n}))), z.array(AirdropAddressInput)]);\n\nclass Erc1155Burnable {\n constructor(contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_BURNABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Burn a specified amount of a NFTs\n *\n * @remarks Burn the specified NFTs from the connected wallet\n *\n * @param tokenId - the token Id to burn\n * @param amount - amount to burn\n *\n * @example\n * ```javascript\n * // The token ID to burn NFTs of\n * const tokenId = 0;\n * // The amount of the NFT you want to burn\n * const amount = 2;\n *\n * const result = await contract.edition.burn.tokens(tokenId, amount);\n * ```\n */\n async tokens(tokenId, amount) {\n const account = await this.contractWrapper.getSignerAddress();\n return this.from(account, tokenId, amount);\n }\n\n /**\n * Burn a specified amount of a NFTs\n *\n * @remarks Burn the specified NFTs from a specified wallet\n *\n * @param account - the address to burn NFTs from\n * @param tokenId - the tokenId to burn\n * @param amount - amount to burn\n *\n * @example\n * ```javascript\n * // The address of the wallet to burn NFTS from\n * const account = \"0x...\";\n * // The token ID to burn NFTs of\n * const tokenId = 0;\n * // The amount of this NFT you want to burn\n * const amount = 2;\n *\n * const result = await contract.edition.burn.from(account, tokenId, amount);\n * ```\n */\n async from(account, tokenId, amount) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"burn\", [account, tokenId, amount])\n };\n }\n\n /**\n * Burn a batch of NFTs\n *\n * @remarks Burn the batch NFTs from the connected wallet\n *\n * @param tokenIds - the tokenIds to burn\n * @param amounts - amount of each token to burn\n *\n * @example\n * ```javascript\n * // The token IDs to burn NFTs of\n * const tokenIds = [0, 1];\n * // The amounts of each NFT you want to burn\n * const amounts = [2, 2];\n *\n * const result = await contract.edition.burn.batch(tokenIds, amounts);\n * ```\n */\n async batch(tokenIds, amounts) {\n const account = await this.contractWrapper.getSignerAddress();\n return this.batchFrom(account, tokenIds, amounts);\n }\n\n /**\n * Burn a batch of NFTs\n *\n * @remarks Burn the batch NFTs from the specified wallet\n *\n * @param account - the address to burn NFTs from\n * @param tokenIds - the tokenIds to burn\n * @param amounts - amount of each token to burn\n *\n * @example\n * ```javascript\n * // The address of the wallet to burn NFTS from\n * const account = \"0x...\";\n * // The token IDs to burn NFTs of\n * const tokenIds = [0, 1];\n * // The amounts of each NFT you want to burn\n * const amounts = [2, 2];\n *\n * const result = await contract.edition.burn.batchFrom(account, tokenIds, amounts);\n * ```\n */\n async batchFrom(account, tokenIds, amounts) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"burnBatch\", [account, tokenIds, amounts])\n };\n }\n}\n\n/**\n * List ERC1155 NFTs\n * @remarks Easily list all the NFTs in a ERC1155 contract.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const nfts = await contract.edition.query.all();\n * ```\n * @public\n */\nclass Erc1155Enumerable {\n constructor(erc1155, contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_ENUMERABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc1155\", void 0);\n this.erc1155 = erc1155;\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Get All NFTs\n *\n * @remarks Get all the data associated with every NFT in this contract.\n *\n * By default, returns the first 100 NFTs, use queryParams to fetch more.\n *\n * @example\n * ```javascript\n * const nfts = await contract.edition.query.all();\n * ```\n * @param queryParams - optional filtering to only fetch a subset of results.\n * @returns The NFT metadata for all NFTs queried.\n */\n async all(queryParams) {\n const start = BigNumber.from(queryParams?.start || 0).toNumber();\n const count = BigNumber.from(queryParams?.count || DEFAULT_QUERY_ALL_COUNT).toNumber();\n const maxId = Math.min((await this.totalCount()).toNumber(), start + count);\n return await Promise.all([...Array(maxId - start).keys()].map(i => this.erc1155.get((start + i).toString())));\n }\n\n /**\n * Get the number of NFTs minted\n * @remarks This returns the total number of NFTs minted in this contract, **not** the total supply of a given token.\n *\n * @returns the total number of NFTs minted in this contract\n * @public\n */\n async totalCount() {\n return await this.contractWrapper.readContract.nextTokenIdToMint();\n }\n\n /**\n * Get the supply of token for a given tokenId.\n * @remarks This is **not** the sum of supply of all NFTs in the contract.\n *\n * @returns the total number of NFTs minted in this contract\n * @public\n */\n async totalCirculatingSupply(tokenId) {\n return await this.contractWrapper.readContract.totalSupply(tokenId);\n }\n\n /**\n * Get Owned NFTs\n *\n * @remarks Get all the data associated with the NFTs owned by a specific wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to get the NFTs of\n * const address = \"{{wallet_address}}\";\n * const nfts = await contract.edition.query.owned(address);\n * ```\n *\n * @returns The NFT metadata for all NFTs in the contract.\n */\n async owned(walletAddress) {\n const address = walletAddress || (await this.contractWrapper.getSignerAddress());\n const maxId = await this.contractWrapper.readContract.nextTokenIdToMint();\n const balances = await this.contractWrapper.readContract.balanceOfBatch(Array(maxId.toNumber()).fill(address), Array.from(Array(maxId.toNumber()).keys()));\n const ownedBalances = balances.map((b, i) => {\n return {\n tokenId: i,\n balance: b\n };\n }).filter(b => b.balance.gt(0));\n return await Promise.all(ownedBalances.map(async b => {\n const editionMetadata = await this.erc1155.get(b.tokenId.toString());\n return {\n ...editionMetadata,\n owner: address,\n quantityOwned: b.balance.toNumber()\n };\n }));\n }\n}\n\nasync function getPrebuiltInfo(address, provider) {\n try {\n const contract = new ethers.Contract(address, IThirdwebContractABI, provider);\n const [type, version] = await Promise.all([ethers.utils.toUtf8String(await contract.contractType()) // eslint-disable-next-line no-control-regex\n .replace(/\\x00/g, \"\"), await contract.contractVersion()]);\n return {\n type,\n version\n };\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * Configure and claim ERC1155 NFTs\n * @remarks Manage claim phases and claim ERC1155 NFTs that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.edition.drop.claim.to(\"0x...\", tokenId, quantity);\n * ```\n */\nclass ERC1155Claimable {\n constructor(contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_CLAIM_CUSTOM.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Construct a claim transaction without executing it.\n * This is useful for estimating the gas cost of a claim transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Options for claiming the NFTs\n */\n async getClaimTransaction(destinationAddress, tokenId, quantity, options) {\n let overrides = {};\n if (options && options.pricePerToken) {\n overrides = await calculateClaimCost(this.contractWrapper, options.pricePerToken, quantity, options.currencyAddress, options.checkERC20Allowance);\n }\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"claim\",\n args: [destinationAddress, tokenId, quantity],\n overrides\n });\n }\n\n /**\n * Claim NFTs to a specific Wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const tokenId = 0; // the id of the NFT you want to claim\n * const quantity = 1; // how many NFTs you want to claim\n *\n * const tx = await contract.erc1155.claimTo(address, tokenId, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Options for claiming the NFTs\n *\n * @returns - Receipt for the transaction\n */\n async to(destinationAddress, tokenId, quantity, options) {\n const tx = await this.getClaimTransaction(destinationAddress, tokenId, quantity, options);\n return await tx.execute();\n }\n}\n\n/**\n * Configure and claim ERC1155 NFTs\n * @remarks Manage claim phases and claim ERC1155 NFTs that have been lazily minted.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.erc1155.claim(tokenId, quantity);\n * await contract.erc1155.claimConditions.getActive(tokenId);\n * ```\n */\nclass Erc1155ClaimableWithConditions {\n constructor(contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_CLAIM_CONDITIONS_V2.name);\n _defineProperty(this, \"conditions\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n const metadata = new ContractMetadata(this.contractWrapper, CustomContractSchema, this.storage);\n this.conditions = new DropErc1155ClaimConditions(contractWrapper, metadata, this.storage);\n }\n\n /**\n * Claim NFTs to a specific Wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const tokenId = 0; // the id of the NFT you want to claim\n * const quantity = 1; // how many NFTs you want to claim\n *\n * const tx = await contract.erc1155.claimTo(address, tokenId, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n *\n * @returns - Receipt for the transaction\n */\n async to(destinationAddress, tokenId, quantity, options) {\n const tx = await this.conditions.getClaimTransaction(destinationAddress, tokenId, quantity, options);\n return await tx.execute();\n }\n}\n\nclass Erc1155LazyMintable {\n /**\n * Delayed reveal\n * @remarks Create a batch of encrypted NFTs that can be revealed at a later time.\n * @example\n * ```javascript\n * // the real NFTs, these will be encrypted until you reveal them\n * const realNFTs = [{\n * name: \"Common NFT #1\",\n * description: \"Common NFT, one of many.\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }, {\n * name: \"Super Rare NFT #2\",\n * description: \"You got a Super Rare NFT!\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n * // A placeholder NFT that people will get immediately in their wallet, and will be converted to the real NFT at reveal time\n * const placeholderNFT = {\n * name: \"Hidden NFT\",\n * description: \"Will be revealed next week!\"\n * };\n * // Create and encrypt the NFTs\n * await contract.edition.drop.revealer.createDelayedRevealBatch(\n * placeholderNFT,\n * realNFTs,\n * \"my secret password\",\n * );\n * // Whenever you're ready, reveal your NFTs at any time\n * const batchId = 0; // the batch to reveal\n * await contract.edition.drop.revealer.reveal(batchId, \"my secret password\");\n * ```\n */\n\n /**\n * Claim tokens and configure claim conditions\n * @remarks Let users claim NFTs. Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const quantity = 10;\n * const tokenId = 0;\n * await contract.erc1155.claimTo(\"0x...\", 0, quantity);\n * ```\n */\n\n constructor(erc1155, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_LAZY_MINTABLE_V2.name);\n _defineProperty(this, \"revealer\", void 0);\n _defineProperty(this, \"claimWithConditions\", void 0);\n _defineProperty(this, \"claim\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc1155\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc1155 = erc1155;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.claim = this.detectErc1155Claimable();\n this.claimWithConditions = this.detectErc1155ClaimableWithConditions();\n this.revealer = this.detectErc1155Revealable();\n }\n\n /**\n * Create a batch of NFTs to be claimed in the future\n *\n * @remarks Create batch allows you to create a batch of many NFTs in one transaction.\n *\n * @example\n * ```javascript\n * // Custom metadata of the NFTs to create\n * const metadatas = [{\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n *\n * const results = await contract.erc1155.lazyMint(metadatas); // uploads and creates the NFTs on chain\n * const firstTokenId = results[0].id; // token id of the first created NFT\n * const firstNFT = await results[0].data(); // (optional) fetch details of the first created NFT\n * ```\n *\n * @param metadatas - The metadata to include in the batch.\n * @param options - optional upload progress callback\n */\n async lazyMint(metadatas, options) {\n const startFileNumber = await this.erc1155.nextTokenIdToMint();\n const batch = await uploadOrExtractURIs(metadatas, this.storage, startFileNumber.toNumber(), options);\n // ensure baseUri is the same for the entire batch\n const baseUri = batch[0].substring(0, batch[0].lastIndexOf(\"/\"));\n for (let i = 0; i < batch.length; i++) {\n const uri = batch[i].substring(0, batch[i].lastIndexOf(\"/\"));\n if (baseUri !== uri) {\n throw new Error(`Can only create batches with the same base URI for every entry in the batch. Expected '${baseUri}' but got '${uri}'`);\n }\n }\n const isLegacyEditionDropContract = await this.isLegacyEditionDropContract();\n let receipt;\n if (isLegacyEditionDropContract) {\n receipt = await this.contractWrapper.sendTransaction(\"lazyMint\", [batch.length, `${baseUri.endsWith(\"/\") ? baseUri : `${baseUri}/`}`]);\n } else {\n // new contracts/extensions have support for delayed reveal that adds an extra parameter to lazyMint\n receipt = await this.contractWrapper.sendTransaction(\"lazyMint\", [batch.length, `${baseUri.endsWith(\"/\") ? baseUri : `${baseUri}/`}`, ethers.utils.toUtf8Bytes(\"\")]);\n }\n const event = this.contractWrapper.parseLogs(\"TokensLazyMinted\", receipt?.logs);\n const startingIndex = event[0].args.startTokenId;\n const endingIndex = event[0].args.endTokenId;\n const results = [];\n for (let id = startingIndex; id.lte(endingIndex); id = id.add(1)) {\n results.push({\n id,\n receipt,\n data: () => this.erc1155.getTokenMetadata(id)\n });\n }\n return results;\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n detectErc1155Claimable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155ClaimCustom\")) {\n return new ERC1155Claimable(this.contractWrapper);\n }\n return undefined;\n }\n detectErc1155ClaimableWithConditions() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155ClaimConditionsV1\") || detectContractFeature(this.contractWrapper, \"ERC1155ClaimConditionsV2\") || detectContractFeature(this.contractWrapper, \"ERC1155ClaimPhasesV1\") || detectContractFeature(this.contractWrapper, \"ERC1155ClaimPhasesV2\")) {\n return new Erc1155ClaimableWithConditions(this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc1155Revealable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155Revealable\")) {\n return new DelayedReveal(this.contractWrapper, this.storage, FEATURE_EDITION_REVEALABLE.name, () => this.erc1155.nextTokenIdToMint());\n }\n return undefined;\n }\n async isLegacyEditionDropContract() {\n const info = await getPrebuiltInfo(this.contractWrapper.readContract.address, this.contractWrapper.getProvider());\n return info && info.type === \"DropERC1155\" && info.version < 3;\n }\n}\n\n/**\n * Mint Many ERC1155 NFTs at once\n * @remarks NFT batch minting functionality that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.edition.mint.batch.to(walletAddress, [nftMetadataWithSupply1, nftMetadataWithSupply2, ...]);\n * ```\n * @public\n */\nclass Erc1155BatchMintable {\n constructor(erc1155, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_BATCH_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc1155\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.erc1155 = erc1155;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n\n /**\n * Mint Many NFTs with limited supplies\n *\n * @remarks Mint many different NFTs with limited supplies to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const toAddress = \"{{wallet_address}}\"\n *\n * // Custom metadata and supplies of your NFTs\n * const metadataWithSupply = [{\n * supply: 50, // The number of this NFT you want to mint\n * metadata: {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * },\n * }, {\n * supply: 100,\n * metadata: {\n * name: \"Cool NFT #2\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * },\n * }];\n *\n * const tx = await contract.edition.mint.batch.to(toAddress, metadataWithSupply);\n * const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs\n * const firstTokenId = tx[0].id; // token id of the first minted NFT\n * const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT\n * ```\n */\n async to(to, metadataWithSupply) {\n const metadatas = metadataWithSupply.map(a => a.metadata);\n const supplies = metadataWithSupply.map(a => a.supply);\n const uris = await uploadOrExtractURIs(metadatas, this.storage);\n const encoded = uris.map((uri, index) => this.contractWrapper.readContract.interface.encodeFunctionData(\"mintTo\", [to, ethers.constants.MaxUint256, uri, supplies[index]]));\n const receipt = await this.contractWrapper.multiCall(encoded);\n const events = this.contractWrapper.parseLogs(\"TokensMinted\", receipt.logs);\n if (events.length === 0 || events.length < metadatas.length) {\n throw new Error(\"TokenMinted event not found, minting failed\");\n }\n return events.map(e => {\n const id = e.args.tokenIdMinted;\n return {\n id,\n receipt,\n data: () => this.erc1155.get(id)\n };\n });\n }\n}\n\n/**\n * Mint ERC1155 NFTs\n * @remarks NFT minting functionality that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.edition.mint.to(walletAddress, nftMetadata);\n * ```\n * @public\n */\nclass Erc1155Mintable {\n /**\n * Batch mint Tokens to many addresses\n */\n\n constructor(erc1155, contractWrapper, storage) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"erc1155\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"batch\", void 0);\n this.erc1155 = erc1155;\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.batch = this.detectErc1155BatchMintable();\n }\n\n /**\n * Mint an NFT with a limited supply\n *\n * @remarks Mint an NFT with a limited supply to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const toAddress = \"{{wallet_address}}\"\n *\n * // Custom metadata of the NFT, note that you can fully customize this metadata with other properties.\n * const metadata = {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }\n *\n * const metadataWithSupply = {\n * metadata,\n * supply: 1000, // The number of this NFT you want to mint\n * }\n *\n * const tx = await contract.edition.mint.to(toAddress, metadataWithSupply);\n * const receipt = tx.receipt; // the transaction receipt\n * const tokenId = tx.id; // the id of the NFT minted\n * const nft = await tx.data(); // (optional) fetch details of minted NFT\n * ```\n */\n async to(to, metadataWithSupply) {\n const tx = await this.getMintTransaction(to, metadataWithSupply);\n const {\n receipt\n } = await tx.execute();\n const event = this.contractWrapper.parseLogs(\"TransferSingle\", receipt?.logs);\n if (event.length === 0) {\n throw new Error(\"TransferSingleEvent event not found\");\n }\n const id = event[0].args.id;\n return {\n id,\n receipt,\n data: () => this.erc1155.get(id.toString())\n };\n }\n async getMintTransaction(to, metadataWithSupply) {\n const uri = await uploadOrExtractURI(metadataWithSupply.metadata, this.storage);\n return TransactionTask.make({\n contractWrapper: this.contractWrapper,\n functionName: \"mintTo\",\n args: [to, ethers.constants.MaxUint256, uri, metadataWithSupply.supply]\n });\n }\n\n /**\n * Increase the supply of an existing NFT and mint it to a given wallet address\n *\n * @param to - the address to mint to\n * @param tokenId - the token id of the NFT to increase supply of\n * @param additionalSupply - the additional amount to mint\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const toAddress = \"{{wallet_address}}\"\n * const tokenId = 0;\n * const additionalSupply = 1000;\n *\n * const tx = await contract.edition.mint.additionalSupplyTo(toAddress, tokenId, additionalSupply);\n * ```\n */\n async additionalSupplyTo(to, tokenId, additionalSupply) {\n const metadata = await this.erc1155.getTokenMetadata(tokenId);\n const receipt = await this.contractWrapper.sendTransaction(\"mintTo\", [to, tokenId, metadata.uri, additionalSupply]);\n return {\n id: BigNumber.from(tokenId),\n receipt,\n data: () => this.erc1155.get(tokenId)\n };\n }\n detectErc1155BatchMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155BatchMintable\")) {\n return new Erc1155BatchMintable(this.erc1155, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n}\n\n/**\n * Enables generating dynamic ERC1155 NFTs with rules and an associated signature, which can then be minted by anyone securely\n * @public\n */\nclass Erc1155SignatureMintable {\n constructor(contractWrapper, storage, roles) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION_SIGNATURE_MINTABLE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"roles\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.roles = roles;\n }\n\n /**\n * Mint a dynamically generated NFT\n *\n * @remarks Mint a dynamic NFT with a previously generated signature.\n *\n * @example\n * ```javascript\n * // see how to craft a payload to sign in the `generate()` documentation\n * const signedPayload = contract.erc1155.signature.generate(payload);\n *\n * // now anyone can mint the NFT\n * const tx = contract.erc1155.signature.mint(signedPayload);\n * ```\n * @param signedPayload - the previously generated payload and signature with {@link Erc1155SignatureMintable.generate}\n * @twfeature ERC1155SignatureMintable\n */\n async mint(signedPayload) {\n const mintRequest = signedPayload.payload;\n const signature = signedPayload.signature;\n const message = await this.mapPayloadToContractStruct(mintRequest);\n const overrides = await this.contractWrapper.getCallOverrides();\n await setErc20Allowance(this.contractWrapper, message.pricePerToken.mul(message.quantity), mintRequest.currencyAddress, overrides);\n const receipt = await this.contractWrapper.sendTransaction(\"mintWithSignature\", [message, signature], overrides);\n const t = this.contractWrapper.parseLogs(\"TokensMintedWithSignature\", receipt.logs);\n if (t.length === 0) {\n throw new Error(\"No MintWithSignature event found\");\n }\n const id = t[0].args.tokenIdMinted;\n return {\n id,\n receipt\n };\n }\n\n /**\n * Mint any number of dynamically generated NFT at once\n * @remarks Mint multiple dynamic NFTs in one transaction. Note that this is only possible for free mints (cannot batch mints with a price attached to it for security reasons)\n *\n * @example\n * ```javascript\n * // see how to craft a batch of payloads to sign in the `generateBatch()` documentation\n * const signedPayloads = contract.erc1155.signature.generateBatch(payloads);\n *\n * // now anyone can mint the NFT\n * const tx = contract.erc1155.signature.mintBatch(signedPayloads);\n * ```\n *\n * @param signedPayloads - the array of signed payloads to mint\n * @twfeature ERC1155SignatureMintable\n */\n async mintBatch(signedPayloads) {\n const contractPayloads = await Promise.all(signedPayloads.map(async s => {\n const message = await this.mapPayloadToContractStruct(s.payload);\n const signature = s.signature;\n const price = s.payload.price;\n if (BigNumber.from(price).gt(0)) {\n throw new Error(\"Can only batch free mints. For mints with a price, use regular mint()\");\n }\n return {\n message,\n signature\n };\n }));\n const encoded = contractPayloads.map(p => {\n return this.contractWrapper.readContract.interface.encodeFunctionData(\"mintWithSignature\", [p.message, p.signature]);\n });\n const receipt = await this.contractWrapper.multiCall(encoded);\n const events = this.contractWrapper.parseLogs(\"TokensMintedWithSignature\", receipt.logs);\n if (events.length === 0) {\n throw new Error(\"No MintWithSignature event found\");\n }\n return events.map(log => ({\n id: log.args.tokenIdMinted,\n receipt\n }));\n }\n\n /**\n * Verify that a payload is correctly signed\n * @param signedPayload - the payload to verify\n * @twfeature ERC1155SignatureMintable\n *\n * @example\n * ```javascript\n * const nftMetadata = {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * metadata: nftMetadata, // The NFT to mint\n * to: {{wallet_address}}, // Who will receive the NFT\n * quantity: 2, // the quantity of NFTs to mint\n * price: 0.5, // the price per NFT\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now\n * royaltyRecipient: \"0x...\", // custom royalty recipient for this NFT\n * royaltyBps: 100, // custom royalty fees for this NFT (in bps)\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this NFT\n * };\n *\n * const signedPayload = contract.erc1155.signature.generate(payload);\n * // Now you can verify that the payload is valid\n * const isValid = await contract.erc1155.signature.verify(signedPayload);\n * ```\n */\n async verify(signedPayload) {\n const mintRequest = signedPayload.payload;\n const signature = signedPayload.signature;\n const message = await this.mapPayloadToContractStruct(mintRequest);\n const verification = await this.contractWrapper.readContract.verify(message, signature);\n return verification[0];\n }\n\n /**\n * Generate a signature that can be used to mint an NFT dynamically.\n *\n * @remarks Takes in an NFT and some information about how it can be minted, uploads the metadata and signs it with your private key. The generated signature can then be used to mint an NFT using the exact payload and signature generated.\n *\n * @example\n * ```javascript\n * const nftMetadata = {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * metadata: nftMetadata, // The NFT to mint\n * to: {{wallet_address}}, // Who will receive the NFT\n * quantity: 2, // the quantity of NFTs to mint\n * price: 0.5, // the price per NFT\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now\n * royaltyRecipient: \"0x...\", // custom royalty recipient for this NFT\n * royaltyBps: 100, // custom royalty fees for this NFT (in bps)\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this NFT\n * };\n *\n * const signedPayload = await contract.erc1155.signature.generate(payload);\n * // now anyone can use these to mint the NFT using `contract.erc1155.signature.mint(signedPayload)`\n * ```\n * @param payloadToSign - the payload to sign\n * @returns the signed payload and the corresponding signature\n * @twfeature ERC1155SignatureMintable\n */\n async generate(payloadToSign) {\n const payload = {\n ...payloadToSign,\n tokenId: ethers.constants.MaxUint256\n };\n return this.generateFromTokenId(payload);\n }\n\n /**\n * Generate a signature that can be used to mint additionaly supply to an existing NFT.\n *\n * @remarks Takes in a payload with the token ID of an existing NFT, and signs it with your private key. The generated signature can then be used to mint additional supply to the NFT using the exact payload and signature generated.\n *\n * @example\n * ```javascript\n * const nftMetadata = {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * };\n *\n * const startTime = new Date();\n * const endTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const payload = {\n * tokenId: 0, // Instead of metadata, we specificy the token ID of the NFT to mint supply to\n * to: {{wallet_address}}, // Who will receive the NFT (or AddressZero for anyone)\n * quantity: 2, // the quantity of NFTs to mint\n * price: 0.5, // the price per NFT\n * currencyAddress: NATIVE_TOKEN_ADDRESS, // the currency to pay with\n * mintStartTime: startTime, // can mint anytime from now\n * mintEndTime: endTime, // to 24h from now\n * royaltyRecipient: \"0x...\", // custom royalty recipient for this NFT\n * royaltyBps: 100, // custom royalty fees for this NFT (in bps)\n * primarySaleRecipient: \"0x...\", // custom sale recipient for this NFT\n * };\n *\n * const signedPayload = await contract.erc1155.signature.generateFromTokenId(payload);\n * // now anyone can use these to mint the NFT using `contract.erc1155.signature.mint(signedPayload)`\n * ```\n * @param payloadToSign - the payload to sign\n * @returns the signed payload and the corresponding signature\n * @twfeature ERC1155SignatureMintable\n */\n async generateFromTokenId(payloadToSign) {\n const payloads = await this.generateBatchFromTokenIds([payloadToSign]);\n return payloads[0];\n }\n\n /**\n * Generate a batch of signatures that can be used to mint many new NFTs dynamically.\n *\n * @remarks See {@link Erc1155SignatureMintable.generate}\n *\n * @param payloadsToSign - the payloads to sign\n * @returns an array of payloads and signatures\n * @twfeature ERC1155SignatureMintable\n */\n async generateBatch(payloadsToSign) {\n const payloads = payloadsToSign.map(payload => ({\n ...payload,\n tokenId: ethers.constants.MaxUint256\n }));\n return this.generateBatchFromTokenIds(payloads);\n }\n\n /**\n * Genrate a batch of signatures that can be used to mint new NFTs or additionaly supply to existing NFTs dynamically.\n *\n * @remarks See {@link Erc1155SignatureMintable.generateFromTokenId}\n *\n * @param payloadsToSign - the payloads to sign with tokenIds specified\n * @returns an array of payloads and signatures\n * @twfeature ERC1155SignatureMintable\n */\n async generateBatchFromTokenIds(payloadsToSign) {\n await this.roles?.verify([\"minter\"], await this.contractWrapper.getSignerAddress());\n const parsedRequests = payloadsToSign.map(m => Signature1155PayloadInputWithTokenId.parse(m));\n const metadatas = parsedRequests.map(r => r.metadata);\n const uris = await uploadOrExtractURIs(metadatas, this.storage);\n const chainId = await this.contractWrapper.getChainID();\n const signer = this.contractWrapper.getSigner();\n invariant(signer, \"No signer available\");\n const contractInfo = await getPrebuiltInfo(this.contractWrapper.readContract.address, this.contractWrapper.getProvider());\n const isLegacyContract = contractInfo?.type === \"TokenERC1155\";\n return await Promise.all(parsedRequests.map(async (m, i) => {\n const uri = uris[i];\n const finalPayload = Signature1155PayloadOutput.parse({\n ...m,\n uri\n });\n const signature = await this.contractWrapper.signTypedData(signer, {\n name: isLegacyContract ? \"TokenERC1155\" : \"SignatureMintERC1155\",\n version: \"1\",\n chainId,\n verifyingContract: this.contractWrapper.readContract.address\n }, {\n MintRequest: MintRequest1155\n },\n // TYPEHASH\n await this.mapPayloadToContractStruct(finalPayload));\n return {\n payload: finalPayload,\n signature: signature.toString()\n };\n }));\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * Maps a payload to the format expected by the contract\n *\n * @internal\n *\n * @param mintRequest - The payload to map.\n * @returns - The mapped payload.\n */\n async mapPayloadToContractStruct(mintRequest) {\n const normalizedPricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), mintRequest.price, mintRequest.currencyAddress);\n return {\n to: mintRequest.to,\n tokenId: mintRequest.tokenId,\n uri: mintRequest.uri,\n quantity: mintRequest.quantity,\n pricePerToken: normalizedPricePerToken,\n currency: mintRequest.currencyAddress,\n validityStartTimestamp: mintRequest.mintStartTime,\n validityEndTimestamp: mintRequest.mintEndTime,\n uid: mintRequest.uid,\n royaltyRecipient: mintRequest.royaltyRecipient,\n royaltyBps: mintRequest.royaltyBps,\n primarySaleRecipient: mintRequest.primarySaleRecipient\n };\n }\n}\n\n/**\n * Standard ERC1155 NFT functions\n * @remarks Basic functionality for a ERC1155 contract that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.erc1155.transfer(walletAddress, tokenId, quantity);\n * ```\n * @public\n */\nclass Erc1155 {\n get chainId() {\n return this._chainId;\n }\n constructor(contractWrapper, storage, chainId) {\n _defineProperty(this, \"featureName\", FEATURE_EDITION.name);\n _defineProperty(this, \"query\", void 0);\n _defineProperty(this, \"mintable\", void 0);\n _defineProperty(this, \"burnable\", void 0);\n _defineProperty(this, \"lazyMintable\", void 0);\n _defineProperty(this, \"signatureMintable\", void 0);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.query = this.detectErc1155Enumerable();\n this.mintable = this.detectErc1155Mintable();\n this.burnable = this.detectErc1155Burnable();\n this.lazyMintable = this.detectErc1155LazyMintable();\n this.signatureMintable = this.detectErc1155SignatureMintable();\n this._chainId = chainId;\n }\n\n /**\n * @internal\n */\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n ////// Standard ERC1155 functions //////\n\n /**\n * Get a single NFT Metadata\n *\n * @example\n * ```javascript\n * const nft = await contract.erc1155.get(0);\n * ```\n * @param tokenId - the tokenId of the NFT to retrieve\n * @returns The NFT metadata\n * @twfeature ERC1155\n */\n async get(tokenId) {\n const [supply, metadata] = await Promise.all([this.contractWrapper.readContract.totalSupply(tokenId).catch(() => BigNumber.from(0)), this.getTokenMetadata(tokenId).catch(() => ({\n id: tokenId.toString(),\n uri: \"\",\n ...FALLBACK_METADATA\n }))]);\n return {\n owner: ethers.constants.AddressZero,\n metadata,\n type: \"ERC1155\",\n supply: supply.toNumber()\n };\n }\n\n /**\n * Returns the total supply of a specific token\n * @param tokenId - The token ID to get the total supply of\n * @returns the total supply\n */\n async totalSupply(tokenId) {\n return await this.contractWrapper.readContract.totalSupply(tokenId);\n }\n\n /**\n * Get NFT Balance\n *\n * @remarks Get a wallets NFT balance (number of NFTs in this contract owned by the wallet).\n *\n * @example\n * ```javascript\n * // Address of the wallet to check NFT balance\n * const walletAddress = \"{{wallet_address}}\";\n * const tokenId = 0; // Id of the NFT to check\n * const balance = await contract.erc1155.balanceOf(walletAddress, tokenId);\n * ```\n * @twfeature ERC1155\n */\n async balanceOf(address, tokenId) {\n return await this.contractWrapper.readContract.balanceOf(address, tokenId);\n }\n\n /**\n * Get NFT Balance for the currently connected wallet\n */\n async balance(tokenId) {\n return await this.balanceOf(await this.contractWrapper.getSignerAddress(), tokenId);\n }\n\n /**\n * Get whether this wallet has approved transfers from the given operator\n * @param address - the wallet address\n * @param operator - the operator address\n */\n async isApproved(address, operator) {\n return await this.contractWrapper.readContract.isApprovedForAll(address, operator);\n }\n\n /**\n * Transfer a single NFT\n *\n * @remarks Transfer an NFT from the connected wallet to another wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to send the NFT to\n * const toAddress = \"{{wallet_address}}\";\n * const tokenId = \"0\"; // The token ID of the NFT you want to send\n * const amount = 3; // How many copies of the NFTs to transfer\n * await contract.erc1155.transfer(toAddress, tokenId, amount);\n * ```\n * @twfeature ERC1155\n */\n async transfer(to, tokenId, amount) {\n let data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [0];\n const from = await this.contractWrapper.getSignerAddress();\n return {\n receipt: await this.contractWrapper.sendTransaction(\"safeTransferFrom\", [from, to, tokenId, amount, data])\n };\n }\n\n /**\n * Approve or remove operator as an operator for the caller. Operators can call transferFrom or safeTransferFrom for any token owned by the caller.\n * @param operator - the operator's address\n * @param approved - whether to approve or remove\n *\n * @internal\n */\n async setApprovalForAll(operator, approved) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setApprovalForAll\", [operator, approved])\n };\n }\n\n /**\n * Airdrop multiple NFTs\n *\n * @remarks Airdrop one or multiple NFTs to the provided wallet addresses.\n *\n * @example\n * ```javascript\n * // The token ID of the NFT you want to airdrop\n * const tokenId = \"0\";\n * // Array of objects of addresses and quantities to airdrop NFTs to\n * const addresses = [\n * {\n * address: \"0x...\",\n * quantity: 2,\n * },\n * {\n * address: \"0x...\",\n * quantity: 3,\n * },\n * ];\n * await contract.airdrop(tokenId, addresses);\n *\n * // You can also pass an array of addresses, it will airdrop 1 NFT per address\n * const tokenId = \"0\";\n * const addresses = [\n * \"0x...\", \"0x...\", \"0x...\",\n * ]\n * await contract.erc1155.airdrop(tokenId, addresses);\n * ```\n */\n async airdrop(tokenId, addresses) {\n let data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0];\n const from = await this.contractWrapper.getSignerAddress();\n const balanceOf = await this.balanceOf(from, tokenId);\n const input = AirdropInputSchema.parse(addresses);\n const totalToAirdrop = input.reduce((prev, curr) => {\n return prev + Number(curr?.quantity || 1);\n }, 0);\n if (balanceOf.toNumber() < totalToAirdrop) {\n throw new Error(`The caller owns ${balanceOf.toNumber()} NFTs, but wants to airdrop ${totalToAirdrop} NFTs.`);\n }\n const encoded = input.map(_ref => {\n let {\n address: to,\n quantity\n } = _ref;\n return this.contractWrapper.readContract.interface.encodeFunctionData(\"safeTransferFrom\", [from, to, tokenId, quantity, data]);\n });\n return {\n receipt: await this.contractWrapper.multiCall(encoded)\n };\n }\n\n /**\n * Return the next available token ID to mint\n * @internal\n */\n async nextTokenIdToMint() {\n if (hasFunction(\"nextTokenIdToMint\", this.contractWrapper)) {\n return await this.contractWrapper.readContract.nextTokenIdToMint();\n } else {\n throw new Error(\"Contract requires the `nextTokenIdToMint` function available to determine the next token ID to mint\");\n }\n }\n\n ////// ERC1155 Enumerable Extension //////\n\n /**\n * Get All NFTs\n *\n * @remarks Get all the data associated with every NFT in this contract.\n *\n * By default, returns the first 100 NFTs, use queryParams to fetch more.\n *\n * @example\n * ```javascript\n * const nfts = await contract.erc1155.getAll();\n * ```\n * @param queryParams - optional filtering to only fetch a subset of results.\n * @returns The NFT metadata for all NFTs queried.\n * @twfeature ERC1155Enumerable\n */\n async getAll(queryParams) {\n return assertEnabled(this.query, FEATURE_EDITION_ENUMERABLE).all(queryParams);\n }\n\n /**\n * Get the number of NFTs minted\n * @remarks This returns the total number of NFTs minted in this contract, **not** the total supply of a given token.\n *\n * @returns the total number of NFTs minted in this contract\n * @public\n */\n async totalCount() {\n return assertEnabled(this.query, FEATURE_EDITION_ENUMERABLE).totalCount();\n }\n\n /**\n * Get the supply of token for a given tokenId.\n * @remarks This is **not** the sum of supply of all NFTs in the contract.\n *\n * @returns the total number of NFTs minted in this contract\n * @public\n */\n async totalCirculatingSupply(tokenId) {\n return assertEnabled(this.query, FEATURE_EDITION_ENUMERABLE).totalCirculatingSupply(tokenId);\n }\n\n /**\n * Get Owned NFTs\n *\n * @remarks Get all the data associated with the NFTs owned by a specific wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet to get the NFTs of\n * const address = \"{{wallet_address}}\";\n * const nfts = await contract.erc1155.getOwned(address);\n * ```\n *\n * @returns The NFT metadata for all NFTs in the contract.\n * @twfeature ERC1155Enumerable\n */\n async getOwned(walletAddress) {\n return assertEnabled(this.query, FEATURE_EDITION_ENUMERABLE).owned(walletAddress);\n }\n\n ////// ERC1155 Mintable Extension //////\n\n /**\n * Mint an NFT with a limited supply\n *\n * @remarks Mint an NFT with a limited supply to the connected wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const toAddress = \"{{wallet_address}}\"\n *\n * // Custom metadata of the NFT, note that you can fully customize this metadata with other properties.\n * const metadata = {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }\n *\n * const metadataWithSupply = {\n * metadata,\n * supply: 1000, // The number of this NFT you want to mint\n * }\n *\n * const tx = await contract.erc1155.mint(toAddress, metadataWithSupply);\n * const receipt = tx.receipt; // the transaction receipt\n * const tokenId = tx.id; // the id of the NFT minted\n * const nft = await tx.data(); // (optional) fetch details of minted NFT\n * ```\n * @twfeature ERC1155Mintable\n */\n async mint(metadataWithSupply) {\n return this.mintTo(await this.contractWrapper.getSignerAddress(), metadataWithSupply);\n }\n\n /**\n * Mint an NFT with a limited supply\n *\n * @remarks Mint an NFT with a limited supply to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const toAddress = \"{{wallet_address}}\"\n *\n * // Custom metadata of the NFT, note that you can fully customize this metadata with other properties.\n * const metadata = {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }\n *\n * const metadataWithSupply = {\n * metadata,\n * supply: 1000, // The number of this NFT you want to mint\n * }\n *\n * const tx = await contract.erc1155.mintTo(toAddress, metadataWithSupply);\n * const receipt = tx.receipt; // the transaction receipt\n * const tokenId = tx.id; // the id of the NFT minted\n * const nft = await tx.data(); // (optional) fetch details of minted NFT\n * ```\n * @twfeature ERC1155Mintable\n */\n async mintTo(receiver, metadataWithSupply) {\n return assertEnabled(this.mintable, FEATURE_EDITION_MINTABLE).to(receiver, metadataWithSupply);\n }\n\n /**\n * Construct a mint transaction without executing it.\n * This is useful for estimating the gas cost of a mint transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param receiver - Address you want to send the token to\n * @param metadataWithSupply - The metadata of the NFT you want to mint\n */\n async getMintTransaction(receiver, metadataWithSupply) {\n return assertEnabled(this.mintable, FEATURE_EDITION_MINTABLE).getMintTransaction(receiver, metadataWithSupply);\n }\n\n /**\n * Increase the supply of an existing NFT\n * @remarks Increase the supply of an existing NFT and mint it to the connected wallet address\n * @example\n * ```javascript\n * const tokenId = 0;\n * const additionalSupply = 1000;\n * await contract.erc1155.mintAdditionalSupply(tokenId, additionalSupply);\n * ```\n *\n * @param tokenId - the token id of the NFT to increase supply of\n * @param additionalSupply - the additional amount to mint\n * @twfeature ERC1155Mintable\n */\n async mintAdditionalSupply(tokenId, additionalSupply) {\n return assertEnabled(this.mintable, FEATURE_EDITION_MINTABLE).additionalSupplyTo(await this.contractWrapper.getSignerAddress(), tokenId, additionalSupply);\n }\n\n /**\n * Increase the supply of an existing NFT and mint it to a given wallet address\n *\n * @param to - the address to mint to\n * @param tokenId - the token id of the NFT to increase supply of\n * @param additionalSupply - the additional amount to mint\n */\n async mintAdditionalSupplyTo(receiver, tokenId, additionalSupply) {\n return assertEnabled(this.mintable, FEATURE_EDITION_MINTABLE).additionalSupplyTo(receiver, tokenId, additionalSupply);\n }\n\n ////// ERC1155 BatchMintable Extension //////\n\n /**\n * Mint Many NFTs with limited supplies\n *\n * @remarks Mint many different NFTs with limited supplies to the connected wallet.\n *\n * @example\n * ```javascript\n * // Custom metadata and supplies of your NFTs\n * const metadataWithSupply = [{\n * supply: 50, // The number of this NFT you want to mint\n * metadata: {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * },\n * }, {\n * supply: 100,\n * metadata: {\n * name: \"Cool NFT #2\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * },\n * }];\n *\n * const tx = await contract.erc1155.mintBatch(metadataWithSupply);\n * const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs\n * const firstTokenId = tx[0].id; // token id of the first minted NFT\n * const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT\n * ```\n * @twfeature ERC1155BatchMintable\n */\n async mintBatch(metadataWithSupply) {\n return this.mintBatchTo(await this.contractWrapper.getSignerAddress(), metadataWithSupply);\n }\n\n /**\n * Mint Many NFTs with limited supplies\n *\n * @remarks Mint many different NFTs with limited supplies to a specified wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to mint the NFT to\n * const toAddress = \"{{wallet_address}}\"\n *\n * // Custom metadata and supplies of your NFTs\n * const metadataWithSupply = [{\n * supply: 50, // The number of this NFT you want to mint\n * metadata: {\n * name: \"Cool NFT #1\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * },\n * }, {\n * supply: 100,\n * metadata: {\n * name: \"Cool NFT #2\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * },\n * }];\n *\n * const tx = await contract.erc1155.mintBatchTo(toAddress, metadataWithSupply);\n * const receipt = tx[0].receipt; // same transaction receipt for all minted NFTs\n * const firstTokenId = tx[0].id; // token id of the first minted NFT\n * const firstNFT = await tx[0].data(); // (optional) fetch details of the first minted NFT\n * ```\n * @twfeature ERC1155BatchMintable\n */\n async mintBatchTo(receiver, metadataWithSupply) {\n return assertEnabled(this.mintable?.batch, FEATURE_EDITION_BATCH_MINTABLE).to(receiver, metadataWithSupply);\n }\n\n ////// ERC1155 Burnable Extension //////\n\n /**\n * Burn a specified amount of a NFTs\n *\n * @remarks Burn the specified NFTs from the connected wallet\n *\n * @param tokenId - the token Id to burn\n * @param amount - amount to burn\n *\n * @example\n * ```javascript\n * // The token ID to burn NFTs of\n * const tokenId = 0;\n * // The amount of the NFT you want to burn\n * const amount = 2;\n *\n * const result = await contract.erc1155.burn(tokenId, amount);\n * ```\n * @twfeature ERC1155Burnable\n */\n async burn(tokenId, amount) {\n return assertEnabled(this.burnable, FEATURE_EDITION_BURNABLE).tokens(tokenId, amount);\n }\n\n /**\n * Burn a specified amount of a NFTs\n *\n * @remarks Burn the specified NFTs from a specified wallet\n *\n * @param account - the address to burn NFTs from\n * @param tokenId - the tokenId to burn\n * @param amount - amount to burn\n *\n * @example\n * ```javascript\n * // The address of the wallet to burn NFTS from\n * const account = \"0x...\";\n * // The token ID to burn NFTs of\n * const tokenId = 0;\n * // The amount of this NFT you want to burn\n * const amount = 2;\n *\n * const result = await contract.erc1155.burnFrom(account, tokenId, amount);\n * ```\n * @twfeature ERC1155Burnable\n */\n async burnFrom(account, tokenId, amount) {\n return assertEnabled(this.burnable, FEATURE_EDITION_BURNABLE).from(account, tokenId, amount);\n }\n\n /**\n * Burn a batch of NFTs\n *\n * @remarks Burn the batch NFTs from the connected wallet\n *\n * @param tokenIds - the tokenIds to burn\n * @param amounts - amount of each token to burn\n *\n * @example\n * ```javascript\n * // The token IDs to burn NFTs of\n * const tokenIds = [0, 1];\n * // The amounts of each NFT you want to burn\n * const amounts = [2, 2];\n *\n * const result = await contract.erc1155.burnBatch(tokenIds, amounts);\n * ```\n * @twfeature ERC1155Burnable\n */\n async burnBatch(tokenIds, amounts) {\n return assertEnabled(this.burnable, FEATURE_EDITION_BURNABLE).batch(tokenIds, amounts);\n }\n\n /**\n * Burn a batch of NFTs\n *\n * @remarks Burn the batch NFTs from the specified wallet\n *\n * @param account - the address to burn NFTs from\n * @param tokenIds - the tokenIds to burn\n * @param amounts - amount of each token to burn\n *\n * @example\n * ```javascript\n * // The address of the wallet to burn NFTS from\n * const account = \"0x...\";\n * // The token IDs to burn NFTs of\n * const tokenIds = [0, 1];\n * // The amounts of each NFT you want to burn\n * const amounts = [2, 2];\n *\n * const result = await contract.erc1155.burnBatchFrom(account, tokenIds, amounts);\n * ```\n * @twfeature ERC1155Burnable\n */\n async burnBatchFrom(account, tokenIds, amounts) {\n return assertEnabled(this.burnable, FEATURE_EDITION_BURNABLE).batchFrom(account, tokenIds, amounts);\n }\n\n ////// ERC721 LazyMint Extension //////\n\n /**\n * Create a batch of NFTs to be claimed in the future\n *\n * @remarks Create batch allows you to create a batch of many NFTs in one transaction.\n *\n * @example\n * ```javascript\n * // Custom metadata of the NFTs to create\n * const metadatas = [{\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"), // This can be an image url or file\n * }, {\n * name: \"Cool NFT\",\n * description: \"This is a cool NFT\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n *\n * const results = await contract.erc1155.lazyMint(metadatas); // uploads and creates the NFTs on chain\n * const firstTokenId = results[0].id; // token id of the first created NFT\n * const firstNFT = await results[0].data(); // (optional) fetch details of the first created NFT\n * ```\n *\n * @param metadatas - The metadata to include in the batch.\n * @param options - optional upload progress callback\n * @twfeature ERC1155LazyMintable\n */\n async lazyMint(metadatas, options) {\n return assertEnabled(this.lazyMintable, FEATURE_EDITION_LAZY_MINTABLE_V2).lazyMint(metadatas, options);\n }\n\n ////// ERC1155 Claimable Extension //////\n\n /**\n * Construct a claim transaction without executing it.\n * This is useful for estimating the gas cost of a claim transaction, overriding transaction options and having fine grained control over the transaction execution.\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Optional claim verification data (e.g. price, currency, etc...)\n */\n async getClaimTransaction(destinationAddress, tokenId, quantity, options) {\n const claimWithConditions = this.lazyMintable?.claimWithConditions;\n const claim = this.lazyMintable?.claim;\n if (claimWithConditions) {\n return claimWithConditions.conditions.getClaimTransaction(destinationAddress, tokenId, quantity, options);\n }\n if (claim) {\n return claim.getClaimTransaction(destinationAddress, tokenId, quantity, options);\n }\n throw new ExtensionNotImplementedError(FEATURE_EDITION_CLAIM_CUSTOM);\n }\n\n /**\n * Claim NFTs\n *\n * @remarks Let the connected wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const tokenId = 0; // the id of the NFT you want to claim\n * const quantity = 1; // how many NFTs you want to claim\n *\n * const tx = await contract.erc1155.claim(tokenId, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Optional claim verification data (e.g. price, currency, etc...)\n *\n * @returns - Receipt for the transaction\n * @twfeature ERC1155Claimable\n */\n async claim(tokenId, quantity, options) {\n return this.claimTo(await this.contractWrapper.getSignerAddress(), tokenId, quantity, options);\n }\n\n /**\n * Claim NFTs to a specific Wallet\n *\n * @remarks Let the specified wallet claim NFTs.\n *\n * @example\n * ```javascript\n * const address = \"{{wallet_address}}\"; // address of the wallet you want to claim the NFTs\n * const tokenId = 0; // the id of the NFT you want to claim\n * const quantity = 1; // how many NFTs you want to claim\n *\n * const tx = await contract.erc1155.claimTo(address, tokenId, quantity);\n * const receipt = tx.receipt; // the transaction receipt\n * ```\n *\n * @param destinationAddress - Address you want to send the token to\n * @param tokenId - Id of the token you want to claim\n * @param quantity - Quantity of the tokens you want to claim\n * @param options - Optional claim verification data (e.g. price, currency, etc...)\n *\n * @returns - Receipt for the transaction\n * @twfeature ERC1155Claimable\n */\n async claimTo(destinationAddress, tokenId, quantity, options) {\n const claimWithConditions = this.lazyMintable?.claimWithConditions;\n const claim = this.lazyMintable?.claim;\n if (claimWithConditions) {\n return claimWithConditions.to(destinationAddress, tokenId, quantity, options);\n }\n if (claim) {\n return claim.to(destinationAddress, tokenId, quantity, options);\n }\n throw new ExtensionNotImplementedError(FEATURE_EDITION_CLAIM_CUSTOM);\n }\n\n /**\n * Configure claim conditions\n * @remarks Define who can claim NFTs in the collection, when and how many.\n * @example\n * ```javascript\n * const presaleStartTime = new Date();\n * const publicSaleStartTime = new Date(Date.now() + 60 * 60 * 24 * 1000);\n * const claimConditions = [\n * {\n * startTime: presaleStartTime, // start the presale now\n * maxQuantity: 2, // limit how many mints for this presale\n * price: 0.01, // presale price\n * snapshot: ['0x...', '0x...'], // limit minting to only certain addresses\n * },\n * {\n * startTime: publicSaleStartTime, // 24h after presale, start public sale\n * price: 0.08, // public sale price\n * }\n * ]);\n * await contract.erc1155.claimConditions.set(tokenId, claimConditions);\n * ```\n * @twfeature ERC1155ClaimableWithConditions\n */\n get claimConditions() {\n return assertEnabled(this.lazyMintable?.claimWithConditions, FEATURE_EDITION_CLAIM_CONDITIONS_V2).conditions;\n }\n\n ////// ERC1155 SignatureMintable Extension //////\n\n /**\n * Signature Minting\n * @remarks Generate dynamic NFTs with your own signature, and let others mint them using that signature.\n * @example\n * ```javascript\n * // see how to craft a payload to sign in the `contract.erc1155.signature.generate()` documentation\n * const signedPayload = contract.erc1155.signature().generate(payload);\n *\n * // now anyone can mint the NFT\n * const tx = contract.erc1155.signature.mint(signedPayload);\n * const receipt = tx.receipt; // the mint transaction receipt\n * const mintedId = tx.id; // the id of the NFT minted\n * ```\n * @twfeature ERC1155SignatureMintable\n */\n get signature() {\n return assertEnabled(this.signatureMintable, FEATURE_EDITION_SIGNATURE_MINTABLE);\n }\n\n ////// ERC1155 DelayedReveal Extension //////\n\n /**\n * Delayed reveal\n * @remarks Create a batch of encrypted NFTs that can be revealed at a later time.\n * @example\n * ```javascript\n * // the real NFTs, these will be encrypted until you reveal them\n * const realNFTs = [{\n * name: \"Common NFT #1\",\n * description: \"Common NFT, one of many.\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }, {\n * name: \"Super Rare NFT #2\",\n * description: \"You got a Super Rare NFT!\",\n * image: fs.readFileSync(\"path/to/image.png\"),\n * }];\n * // A placeholder NFT that people will get immediately in their wallet, and will be converted to the real NFT at reveal time\n * const placeholderNFT = {\n * name: \"Hidden NFT\",\n * description: \"Will be revealed next week!\"\n * };\n * // Create and encrypt the NFTs\n * await contract.erc1155.drop.revealer.createDelayedRevealBatch(\n * placeholderNFT,\n * realNFTs,\n * \"my secret password\",\n * );\n * // Whenever you're ready, reveal your NFTs at any time\n * const batchId = 0; // the batch to reveal\n * await contract.erc1155.revealer.reveal(batchId, \"my secret password\");\n * ```\n * @twfeature ERC1155Revealable\n */\n get revealer() {\n return assertEnabled(this.lazyMintable?.revealer, FEATURE_EDITION_REVEALABLE);\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * @internal\n * @param tokenId - the token Id to fetch\n */\n async getTokenMetadata(tokenId) {\n const tokenUri = await this.contractWrapper.readContract.uri(tokenId);\n if (!tokenUri) {\n throw new NotFoundError();\n }\n return fetchTokenMetadata(tokenId, tokenUri, this.storage);\n }\n detectErc1155Enumerable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155Enumerable\")) {\n return new Erc1155Enumerable(this, this.contractWrapper);\n }\n return undefined;\n }\n detectErc1155Mintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155Mintable\")) {\n return new Erc1155Mintable(this, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc1155Burnable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155Burnable\")) {\n return new Erc1155Burnable(this.contractWrapper);\n }\n return undefined;\n }\n detectErc1155LazyMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155LazyMintableV1\") || detectContractFeature(this.contractWrapper, \"ERC1155LazyMintableV2\")) {\n return new Erc1155LazyMintable(this, this.contractWrapper, this.storage);\n }\n return undefined;\n }\n detectErc1155SignatureMintable() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155SignatureMintable\")) {\n return new Erc1155SignatureMintable(this.contractWrapper, this.storage);\n }\n return undefined;\n }\n}\n\n/**\n * Standard ERC1155 NFT functions\n * @remarks Basic functionality for a ERC1155 contract that handles IPFS storage for you.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * await contract.edition.transfer(walletAddress, tokenId, quantity);\n * ```\n * @public\n */\nclass StandardErc1155 {\n get chainId() {\n return this._chainId;\n }\n constructor(contractWrapper, storage, chainId) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"erc1155\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.erc1155 = new Erc1155(this.contractWrapper, this.storage, chainId);\n this._chainId = chainId;\n }\n\n /**\n * @internal\n */\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n ////// Standard ERC1155 functions //////\n\n /**\n * Get a single NFT Metadata\n *\n * @example\n * ```javascript\n * const nft = await contract.get(\"0\");\n * ```\n * @param tokenId - the tokenId of the NFT to retrieve\n * @returns The NFT metadata\n */\n async get(tokenId) {\n return this.erc1155.get(tokenId);\n }\n\n /**\n * Returns the total supply of a specific token\n * @param tokenId - The token ID to get the total supply of\n * @returns the total supply\n */\n async totalSupply(tokenId) {\n return this.erc1155.totalSupply(tokenId);\n }\n\n /**\n * Get NFT Balance\n *\n * @remarks Get a wallets NFT balance (number of NFTs in this contract owned by the wallet).\n *\n * @example\n * ```javascript\n * // Address of the wallet to check NFT balance\n * const walletAddress = \"{{wallet_address}}\";\n * const tokenId = 0; // Id of the NFT to check\n * const balance = await contract.balanceOf(walletAddress, tokenId);\n * ```\n */\n async balanceOf(address, tokenId) {\n return this.erc1155.balanceOf(address, tokenId);\n }\n\n /**\n * Get NFT Balance for the currently connected wallet\n */\n async balance(tokenId) {\n return this.erc1155.balance(tokenId);\n }\n\n /**\n * Get whether this wallet has approved transfers from the given operator\n * @param address - the wallet address\n * @param operator - the operator address\n */\n async isApproved(address, operator) {\n return this.erc1155.isApproved(address, operator);\n }\n\n /**\n * Transfer a single NFT\n *\n * @remarks Transfer an NFT from the connected wallet to another wallet.\n *\n * @example\n * ```javascript\n * // Address of the wallet you want to send the NFT to\n * const toAddress = \"{{wallet_address}}\";\n * const tokenId = \"0\"; // The token ID of the NFT you want to send\n * const amount = 3; // How many copies of the NFTs to transfer\n * await contract.transfer(toAddress, tokenId, amount);\n * ```\n */\n async transfer(to, tokenId, amount) {\n let data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [0];\n return this.erc1155.transfer(to, tokenId, amount, data);\n }\n\n /**\n * Approve or remove operator as an operator for the caller. Operators can call transferFrom or safeTransferFrom for any token owned by the caller.\n * @param operator - the operator's address\n * @param approved - whether to approve or remove\n *\n * @internal\n */\n async setApprovalForAll(operator, approved) {\n return this.erc1155.setApprovalForAll(operator, approved);\n }\n\n /**\n * Airdrop multiple NFTs\n *\n * @remarks Airdrop one or multiple NFTs to the provided wallet addresses.\n * @twfeature ERC1155\n * @example\n * ```javascript\n * // The token ID of the NFT you want to airdrop\n * const tokenId = \"0\";\n * // Array of objects of addresses and quantities to airdrop NFTs to\n * const addresses = [\n * {\n * address: \"0x...\",\n * quantity: 2,\n * },\n * {\n * address: \"0x...\",\n * quantity: 3,\n * },\n * ];\n * await contract.airdrop(tokenId, addresses);\n *\n * // You can also pass an array of addresses, it will airdrop 1 NFT per address\n * const tokenId = \"0\";\n * const addresses = [\n * \"0x...\", \"0x...\", \"0x...\",\n * ]\n * await contract.airdrop(tokenId, addresses);\n * ```\n */\n async airdrop(tokenId, addresses) {\n let data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0];\n return this.erc1155.airdrop(tokenId, addresses, data);\n }\n}\n\n/**\n * This method checks if the given token is approved for the transferrerContractAddress contract.\n * This is particularly useful for contracts that need to transfer NFTs on the users' behalf\n *\n * @internal\n * @param provider - The connected provider\n * @param transferrerContractAddress - The address of the marketplace contract\n * @param assetContract - The address of the asset contract.\n * @param tokenId - The token id of the token.\n * @param owner - The address of the account that owns the token.\n * @returns - True if the transferrerContractAddress is approved on the token, false otherwise.\n */\nasync function isTokenApprovedForTransfer(provider, transferrerContractAddress, assetContract, tokenId, owner) {\n try {\n const erc165 = new Contract(assetContract, ERC165Abi, provider);\n const isERC721 = await erc165.supportsInterface(InterfaceId_IERC721);\n const isERC1155 = await erc165.supportsInterface(InterfaceId_IERC1155);\n if (isERC721) {\n const asset = new Contract(assetContract, Erc721Abi, provider);\n const approved = await asset.isApprovedForAll(owner, transferrerContractAddress);\n if (approved) {\n return true;\n }\n return (await asset.getApproved(tokenId)).toLowerCase() === transferrerContractAddress.toLowerCase();\n } else if (isERC1155) {\n const asset = new Contract(assetContract, Erc1155Abi, provider);\n return await asset.isApprovedForAll(owner, transferrerContractAddress);\n } else {\n console.error(\"Contract does not implement ERC 1155 or ERC 721.\");\n return false;\n }\n } catch (err) {\n console.error(\"Failed to check if token is approved\", err);\n return false;\n }\n}\n\n/**\n * Checks if the marketplace is approved to make transfers on the assetContract\n * If not, it tries to set the approval.\n * @param contractWrapper\n * @param marketplaceAddress\n * @param assetContract\n * @param tokenId\n * @param from\n */\nasync function handleTokenApproval(contractWrapper, marketplaceAddress, assetContract, tokenId, from) {\n const erc165 = new ContractWrapper(contractWrapper.getSignerOrProvider(), assetContract, ERC165Abi, contractWrapper.options);\n const isERC721 = await erc165.readContract.supportsInterface(InterfaceId_IERC721);\n const isERC1155 = await erc165.readContract.supportsInterface(InterfaceId_IERC1155);\n // check for token approval\n if (isERC721) {\n const asset = new ContractWrapper(contractWrapper.getSignerOrProvider(), assetContract, Erc721Abi, contractWrapper.options);\n const approved = await asset.readContract.isApprovedForAll(from, marketplaceAddress);\n if (!approved) {\n const isTokenApproved = (await asset.readContract.getApproved(tokenId)).toLowerCase() === marketplaceAddress.toLowerCase();\n if (!isTokenApproved) {\n await asset.sendTransaction(\"setApprovalForAll\", [marketplaceAddress, true]);\n }\n }\n } else if (isERC1155) {\n const asset = new ContractWrapper(contractWrapper.getSignerOrProvider(), assetContract, Erc1155Abi, contractWrapper.options);\n const approved = await asset.readContract.isApprovedForAll(from, marketplaceAddress);\n if (!approved) {\n await asset.sendTransaction(\"setApprovalForAll\", [marketplaceAddress, true]);\n }\n } else {\n throw Error(\"Contract must implement ERC 1155 or ERC 721.\");\n }\n}\n\n/**\n * Used to verify fields in new listing.\n * @internal\n */\n// TODO this should be done in zod\nfunction validateNewListingParam(param) {\n invariant(param.assetContractAddress !== undefined && param.assetContractAddress !== null, \"Asset contract address is required\");\n invariant(param.buyoutPricePerToken !== undefined && param.buyoutPricePerToken !== null, \"Buyout price is required\");\n invariant(param.listingDurationInSeconds !== undefined && param.listingDurationInSeconds !== null, \"Listing duration is required\");\n invariant(param.startTimestamp !== undefined && param.startTimestamp !== null, \"Start time is required\");\n invariant(param.tokenId !== undefined && param.tokenId !== null, \"Token ID is required\");\n invariant(param.quantity !== undefined && param.quantity !== null, \"Quantity is required\");\n switch (param.type) {\n case \"NewAuctionListing\":\n {\n invariant(param.reservePricePerToken !== undefined && param.reservePricePerToken !== null, \"Reserve price is required\");\n }\n }\n}\n\n/**\n * Maps a contract offer to the strict interface\n *\n * @internal\n * @param offer\n * @returns - An `Offer` object\n */\nasync function mapOffer(provider, listingId, offer) {\n return {\n quantity: offer.quantityDesired,\n pricePerToken: offer.pricePerToken,\n currencyContractAddress: offer.currency,\n buyerAddress: offer.offeror,\n quantityDesired: offer.quantityWanted,\n currencyValue: await fetchCurrencyValue(provider, offer.currency, offer.quantityWanted.mul(offer.pricePerToken)),\n listingId\n };\n}\nfunction isWinningBid(winningPrice, newBidPrice, bidBuffer) {\n bidBuffer = BigNumber.from(bidBuffer);\n winningPrice = BigNumber.from(winningPrice);\n newBidPrice = BigNumber.from(newBidPrice);\n if (winningPrice.eq(BigNumber.from(0))) {\n return false;\n }\n const buffer = newBidPrice.sub(winningPrice).mul(MAX_BPS).div(winningPrice);\n return buffer.gte(bidBuffer);\n}\nasync function getAllInBatches(start, end, fn) {\n let batches = [];\n while (end - start > DEFAULT_QUERY_ALL_COUNT) {\n batches.push(fn(start, start + DEFAULT_QUERY_ALL_COUNT - 1));\n start += DEFAULT_QUERY_ALL_COUNT;\n }\n batches.push(fn(start, end - 1));\n return await Promise.all(batches);\n}\n\n/**\n * Handles direct listings\n * @public\n */\nclass MarketplaceDirect {\n constructor(contractWrapper, storage) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n /** ******************************\n * READ FUNCTIONS\n *******************************/\n\n /**\n * Get a direct listing by id\n *\n * @param listingId - the listing id\n * @returns the Direct listing object\n */\n async getListing(listingId) {\n const listing = await this.contractWrapper.readContract.listings(listingId);\n if (listing.assetContract === constants.AddressZero) {\n throw new ListingNotFoundError(this.getAddress(), listingId.toString());\n }\n if (listing.listingType !== ListingType.Direct) {\n throw new WrongListingTypeError(this.getAddress(), listingId.toString(), \"Auction\", \"Direct\");\n }\n return await this.mapListing(listing);\n }\n\n /**\n * Get the active offer on a listing\n * @param listingId - the listing id\n * @param address - the address that made the offer\n */\n async getActiveOffer(listingId, address) {\n await this.validateListing(BigNumber.from(listingId));\n invariant(utils.isAddress(address), \"Address must be a valid address\");\n const offers = await this.contractWrapper.readContract.offers(listingId, address);\n if (offers.offeror === constants.AddressZero) {\n return undefined;\n }\n return await mapOffer(this.contractWrapper.getProvider(), BigNumber.from(listingId), offers);\n }\n\n /** ******************************\n * WRITE FUNCTIONS\n *******************************/\n\n /**\n * Create Direct Listing\n *\n * @remarks Create a new listing on the marketplace where people can buy an asset directly.\n *\n * @example\n * ```javascript\n * // Data of the listing you want to create\n * const listing = {\n * // address of the contract the asset you want to list is on\n * assetContractAddress: \"0x...\",\n * // token ID of the asset you want to list\n * tokenId: \"0\",\n * // when should the listing open up for offers\n * startTimestamp: new Date(),\n * // how long the listing will be open for\n * listingDurationInSeconds: 86400,\n * // how many of the asset you want to list\n * quantity: 1,\n * // address of the currency contract that will be used to pay for the listing\n * currencyContractAddress: NATIVE_TOKEN_ADDRESS,\n * // how much the asset will be sold for\n * buyoutPricePerToken: \"1.5\",\n * }\n *\n * const tx = await contract.direct.createListing(listing);\n * const receipt = tx.receipt; // the transaction receipt\n * const id = tx.id; // the id of the newly created listing\n * ```\n */\n async createListing(listing) {\n validateNewListingParam(listing);\n await handleTokenApproval(this.contractWrapper, this.getAddress(), listing.assetContractAddress, listing.tokenId, await this.contractWrapper.getSignerAddress());\n const normalizedPricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), listing.buyoutPricePerToken, listing.currencyContractAddress);\n let listingStartTime = Math.floor(listing.startTimestamp.getTime() / 1000);\n const block = await this.contractWrapper.getProvider().getBlock(\"latest\");\n const blockTime = block.timestamp;\n if (listingStartTime < blockTime) {\n listingStartTime = blockTime;\n }\n const receipt = await this.contractWrapper.sendTransaction(\"createListing\", [{\n assetContract: listing.assetContractAddress,\n tokenId: listing.tokenId,\n buyoutPricePerToken: normalizedPricePerToken,\n currencyToAccept: cleanCurrencyAddress(listing.currencyContractAddress),\n listingType: ListingType.Direct,\n quantityToList: listing.quantity,\n reservePricePerToken: normalizedPricePerToken,\n secondsUntilEndTime: listing.listingDurationInSeconds,\n startTime: BigNumber.from(listingStartTime)\n }], {\n // Higher gas limit for create listing\n gasLimit: 500000\n });\n const event = this.contractWrapper.parseLogs(\"ListingAdded\", receipt?.logs);\n return {\n id: event[0].args.listingId,\n receipt\n };\n }\n\n /**\n * Make an offer for a Direct Listing\n *\n * @remarks Make an offer on a direct listing\n *\n * @example\n * ```javascript\n * import { ChainId, NATIVE_TOKENS } from \"@thirdweb-dev/sdk\";\n *\n * // The listing ID of the asset you want to offer on\n * const listingId = 0;\n * // The price you are willing to offer per token\n * const pricePerToken = 1;\n * // The quantity of tokens you want to receive for this offer\n * const quantity = 1;\n * // The address of the currency you are making the offer in (must be ERC-20)\n * const currencyContractAddress = NATIVE_TOKENS[ChainId.Rinkeby].wrapped.address\n *\n * await contract.direct.makeOffer(\n * listingId,\n * quantity,\n * currencyContractAddress,\n * pricePerToken\n * );\n * ```\n */\n async makeOffer(listingId, quantityDesired, currencyContractAddress, pricePerToken, expirationDate) {\n if (isNativeToken(currencyContractAddress)) {\n throw new Error(\"You must use the wrapped native token address when making an offer with a native token\");\n }\n const normalizedPrice = await normalizePriceValue(this.contractWrapper.getProvider(), pricePerToken, currencyContractAddress);\n try {\n await this.getListing(listingId);\n } catch (err) {\n console.error(\"Failed to get listing, err =\", err);\n throw new Error(`Error getting the listing with id ${listingId}`);\n }\n const quantity = BigNumber.from(quantityDesired);\n const value = BigNumber.from(normalizedPrice).mul(quantity);\n const overrides = (await this.contractWrapper.getCallOverrides()) || {};\n await setErc20Allowance(this.contractWrapper, value, currencyContractAddress, overrides);\n let expirationTimestamp = ethers.constants.MaxUint256;\n if (expirationDate) {\n expirationTimestamp = BigNumber.from(Math.floor(expirationDate.getTime() / 1000));\n }\n return {\n receipt: await this.contractWrapper.sendTransaction(\"offer\", [listingId, quantityDesired, currencyContractAddress, normalizedPrice, expirationTimestamp], overrides)\n };\n }\n\n /**\n * Accept an offer on a direct listing\n *\n * @remarks Accept an offer on a direct listing\n *\n * @example\n * ```javascript\n * // The listing ID of the asset you want to bid on\n * const listingId = 0;\n * // The price you are willing to bid for a single token of the listing\n * const offeror = \"0x...\";\n *\n * await contract.direct.acceptOffer(listingId, offeror);\n * ```\n */\n async acceptOffer(listingId, addressOfOfferor) {\n /**\n * TODO:\n * - Provide better error handling if offer is too low.\n */\n await this.validateListing(BigNumber.from(listingId));\n const offer = await this.contractWrapper.readContract.offers(listingId, addressOfOfferor);\n return {\n receipt: await this.contractWrapper.sendTransaction(\"acceptOffer\", [listingId, addressOfOfferor, offer.currency, offer.pricePerToken])\n };\n }\n\n /**\n * Buy a Listing\n *\n * @remarks Buy a specific direct listing from the marketplace.\n *\n * @example\n * ```javascript\n * // The listing ID of the asset you want to buy\n * const listingId = 0;\n * // Quantity of the asset you want to buy\n * const quantityDesired = 1;\n *\n * await contract.direct.buyoutListing(listingId, quantityDesired);\n * ```\n *\n * @param listingId - The listing id to buy\n * @param quantityDesired - the quantity to buy\n * @param receiver - optional receiver of the bought listing if different from the connected wallet\n */\n async buyoutListing(listingId, quantityDesired, receiver) {\n const listing = await this.validateListing(BigNumber.from(listingId));\n const {\n valid,\n error\n } = await this.isStillValidListing(listing, quantityDesired);\n if (!valid) {\n throw new Error(`Listing ${listingId} is no longer valid. ${error}`);\n }\n const buyFor = receiver ? receiver : await this.contractWrapper.getSignerAddress();\n const quantity = BigNumber.from(quantityDesired);\n const value = BigNumber.from(listing.buyoutPrice).mul(quantity);\n const overrides = (await this.contractWrapper.getCallOverrides()) || {};\n await setErc20Allowance(this.contractWrapper, value, listing.currencyContractAddress, overrides);\n return {\n receipt: await this.contractWrapper.sendTransaction(\"buy\", [listingId, buyFor, quantity, listing.currencyContractAddress, value], overrides)\n };\n }\n\n /**\n * Update a Direct listing with new metadata.\n *\n * Note: cannot update a listing with a new quantity of 0. Use `cancelDirectListing` to remove a listing instead.\n *\n * @param listing - the new listing information\n */\n async updateListing(listing) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"updateListing\", [listing.id, listing.quantity, listing.buyoutPrice,\n // reserve price, doesn't matter for direct listing\n listing.buyoutPrice, listing.currencyContractAddress, listing.startTimeInSeconds, listing.secondsUntilEnd])\n };\n }\n\n /**\n * Cancel Direct Listing\n *\n * @remarks Cancel a direct listing on the marketplace\n *\n * @example\n * ```javascript\n * // The listing ID of the direct listing you want to cancel\n * const listingId = \"0\";\n *\n * await contract.direct.cancelListing(listingId);\n * ```\n */\n async cancelListing(listingId) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"cancelDirectListing\", [listingId])\n };\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * Throws error if listing could not be found\n *\n * @param listingId - Listing to check for\n */\n async validateListing(listingId) {\n try {\n return await this.getListing(listingId);\n } catch (err) {\n console.error(`Error getting the listing with id ${listingId}`);\n throw err;\n }\n }\n\n /**\n * Helper method maps the auction listing to the direct listing interface.\n *\n * @internal\n * @param listing - The listing to map, as returned from the contract.\n * @returns - The mapped interface.\n */\n async mapListing(listing) {\n return {\n assetContractAddress: listing.assetContract,\n buyoutPrice: BigNumber.from(listing.buyoutPricePerToken),\n currencyContractAddress: listing.currency,\n buyoutCurrencyValuePerToken: await fetchCurrencyValue(this.contractWrapper.getProvider(), listing.currency, listing.buyoutPricePerToken),\n id: listing.listingId.toString(),\n tokenId: listing.tokenId,\n quantity: listing.quantity,\n startTimeInSeconds: listing.startTime,\n asset: await fetchTokenMetadataForContract(listing.assetContract, this.contractWrapper.getProvider(), listing.tokenId, this.storage),\n secondsUntilEnd: listing.endTime,\n sellerAddress: listing.tokenOwner,\n type: ListingType.Direct\n };\n }\n\n /**\n * Use this method to check if a direct listing is still valid.\n *\n * Ways a direct listing can become invalid:\n * 1. The asset holder transferred the asset to another wallet\n * 2. The asset holder burned the asset\n * 3. The asset holder removed the approval on the marketplace\n *\n * @internal\n * @param listing - The listing to check.\n * @returns - True if the listing is valid, false otherwise.\n */\n async isStillValidListing(listing, quantity) {\n const approved = await isTokenApprovedForTransfer(this.contractWrapper.getProvider(), this.getAddress(), listing.assetContractAddress, listing.tokenId, listing.sellerAddress);\n if (!approved) {\n return {\n valid: false,\n error: `Token '${listing.tokenId}' from contract '${listing.assetContractAddress}' is not approved for transfer`\n };\n }\n const provider = this.contractWrapper.getProvider();\n const erc165 = new Contract(listing.assetContractAddress, ERC165Abi, provider);\n const isERC721 = await erc165.supportsInterface(InterfaceId_IERC721);\n const isERC1155 = await erc165.supportsInterface(InterfaceId_IERC1155);\n if (isERC721) {\n const asset = new Contract(listing.assetContractAddress, Erc721Abi, provider);\n const valid = (await asset.ownerOf(listing.tokenId)).toLowerCase() === listing.sellerAddress.toLowerCase();\n return {\n valid,\n error: valid ? undefined : `Seller is not the owner of Token '${listing.tokenId}' from contract '${listing.assetContractAddress} anymore'`\n };\n } else if (isERC1155) {\n const asset = new Contract(listing.assetContractAddress, Erc1155Abi, provider);\n const balance = await asset.balanceOf(listing.sellerAddress, listing.tokenId);\n const valid = balance.gte(quantity || listing.quantity);\n return {\n valid,\n error: valid ? undefined : `Seller does not have enough balance of Token '${listing.tokenId}' from contract '${listing.assetContractAddress} to fulfill the listing`\n };\n } else {\n return {\n valid: false,\n error: \"Contract does not implement ERC 1155 or ERC 721.\"\n };\n }\n }\n}\n\n/**\n * Handles auction listings\n * @public\n */\nclass MarketplaceAuction {\n constructor(contractWrapper, storage) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"encoder\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n this.encoder = new ContractEncoder(contractWrapper);\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n /** ******************************\n * READ FUNCTIONS\n *******************************/\n\n /**\n * Get an Auction listing by id\n *\n * @param listingId - the listing Id\n * @returns the Auction listing object\n */\n async getListing(listingId) {\n const listing = await this.contractWrapper.readContract.listings(listingId);\n if (listing.listingId.toString() !== listingId.toString()) {\n throw new ListingNotFoundError(this.getAddress(), listingId.toString());\n }\n if (listing.listingType !== ListingType.Auction) {\n throw new WrongListingTypeError(this.getAddress(), listingId.toString(), \"Direct\", \"Auction\");\n }\n return await this.mapListing(listing);\n }\n\n /**\n * Get Highest Bid\n *\n * @remarks Get the current highest bid of an active auction.\n *\n * @example\n * ```javascript\n * // The listing ID of the auction that closed\n * const listingId = 0;\n *\n * contract.auction.\n * .getWinningBid(listingId)\n * .then((offer) => console.log(offer))\n * .catch((err) => console.error(err));\n * ```\n */\n async getWinningBid(listingId) {\n await this.validateListing(BigNumber.from(listingId));\n const offers = await this.contractWrapper.readContract.winningBid(listingId);\n if (offers.offeror === constants.AddressZero) {\n return undefined;\n }\n return await mapOffer(this.contractWrapper.getProvider(), BigNumber.from(listingId), offers);\n }\n\n /**\n * Get Auction Winner\n *\n * @remarks Get the winner of the auction after an auction ends.\n *\n * @example\n * ```javascript\n * // The listing ID of the auction that closed\n * const listingId = 0;\n *\n * contract.auction.\n * .getWinner(listingId)\n * .then((auctionWinner) => console.log(auctionWinner))\n * .catch((err) => console.error(err));\n * ```\n */\n async getWinner(listingId) {\n const listing = await this.validateListing(BigNumber.from(listingId));\n const offers = await this.contractWrapper.readContract.winningBid(listingId);\n const now = BigNumber.from(Math.floor(Date.now() / 1000));\n const endTime = BigNumber.from(listing.endTimeInEpochSeconds);\n\n // if we have a winner in the map and the current time is past the endtime of the auction return the address of the winner\n if (now.gt(endTime) && offers.offeror !== constants.AddressZero) {\n return offers.offeror;\n }\n // otherwise fall back to query filter things\n\n // TODO this should be via indexer or direct contract call\n const closedAuctions = await this.contractWrapper.readContract.queryFilter(this.contractWrapper.readContract.filters.AuctionClosed());\n const auction = closedAuctions.find(a => a.args.listingId.eq(BigNumber.from(listingId)));\n if (!auction) {\n throw new Error(`Could not find auction with listingId ${listingId} in closed auctions`);\n }\n return auction.args.winningBidder;\n }\n\n /** ******************************\n * WRITE FUNCTIONS\n *******************************/\n\n /**\n * Create Auction\n *\n * @remarks Create a new auction where people can bid on an asset.\n *\n * @example\n * ```javascript\n * // Data of the auction you want to create\n * const auction = {\n * // address of the contract the asset you want to list is on\n * assetContractAddress: \"0x...\",\n * // token ID of the asset you want to list\n * tokenId: \"0\",\n * // when should the listing open up for offers\n * startTimestamp: new Date(),\n * // how long the listing will be open for\n * listingDurationInSeconds: 86400,\n * // how many of the asset you want to list\n * quantity: 1,\n * // address of the currency contract that will be used to pay for the listing\n * currencyContractAddress: NATIVE_TOKEN_ADDRESS,\n * // how much people would have to bid to instantly buy the asset\n * buyoutPricePerToken: \"10\",\n * // the minimum bid that will be accepted for the token\n * reservePricePerToken: \"1.5\",\n * }\n *\n * const tx = await contract.auction.createListing(auction);\n * const receipt = tx.receipt; // the transaction receipt\n * const id = tx.id; // the id of the newly created listing\n * ```\n */\n async createListing(listing) {\n validateNewListingParam(listing);\n await handleTokenApproval(this.contractWrapper, this.getAddress(), listing.assetContractAddress, listing.tokenId, await this.contractWrapper.getSignerAddress());\n const normalizedPricePerToken = await normalizePriceValue(this.contractWrapper.getProvider(), listing.buyoutPricePerToken, listing.currencyContractAddress);\n const normalizedReservePrice = await normalizePriceValue(this.contractWrapper.getProvider(), listing.reservePricePerToken, listing.currencyContractAddress);\n let listingStartTime = Math.floor(listing.startTimestamp.getTime() / 1000);\n const block = await this.contractWrapper.getProvider().getBlock(\"latest\");\n const blockTime = block.timestamp;\n if (listingStartTime < blockTime) {\n listingStartTime = blockTime;\n }\n const receipt = await this.contractWrapper.sendTransaction(\"createListing\", [{\n assetContract: listing.assetContractAddress,\n tokenId: listing.tokenId,\n buyoutPricePerToken: normalizedPricePerToken,\n currencyToAccept: cleanCurrencyAddress(listing.currencyContractAddress),\n listingType: ListingType.Auction,\n quantityToList: listing.quantity,\n reservePricePerToken: normalizedReservePrice,\n secondsUntilEndTime: listing.listingDurationInSeconds,\n startTime: BigNumber.from(listingStartTime)\n }], {\n // Higher gas limit for create listing\n gasLimit: 500000\n });\n const event = this.contractWrapper.parseLogs(\"ListingAdded\", receipt?.logs);\n return {\n id: event[0].args.listingId,\n receipt\n };\n }\n\n /**\n * Buyout Auction\n *\n * @remarks Buy a specific direct listing from the marketplace.\n *\n * @example\n * ```javascript\n * // The listing ID of the asset you want to buy\n * const listingId = 0;\n *\n * await contract.auction.buyoutListing(listingId);\n * ```\n */\n async buyoutListing(listingId) {\n const listing = await this.validateListing(BigNumber.from(listingId));\n const currencyMetadata = await fetchCurrencyMetadata(this.contractWrapper.getProvider(), listing.currencyContractAddress);\n return this.makeBid(listingId, ethers.utils.formatUnits(listing.buyoutPrice, currencyMetadata.decimals));\n }\n\n /**\n * Bid On Auction\n *\n * @remarks Make a bid on an auction listing\n *\n * @example\n * ```javascript\n * // The listing ID of the asset you want to bid on\n * const listingId = 0;\n * // The price you are willing to bid for a single token of the listing\n * const pricePerToken = 1;\n *\n * await contract.auction.makeBid(listingId, pricePerToken);\n * ```\n */\n async makeBid(listingId, pricePerToken) {\n const listing = await this.validateListing(BigNumber.from(listingId));\n const normalizedPrice = await normalizePriceValue(this.contractWrapper.getProvider(), pricePerToken, listing.currencyContractAddress);\n if (normalizedPrice.eq(BigNumber.from(0))) {\n throw new Error(\"Cannot make a bid with 0 value\");\n }\n const bidBuffer = await this.contractWrapper.readContract.bidBufferBps();\n const winningBid = await this.getWinningBid(listingId);\n if (winningBid) {\n const isWinnner = isWinningBid(winningBid.pricePerToken, normalizedPrice, bidBuffer);\n invariant(isWinnner, \"Bid price is too low based on the current winning bid and the bid buffer\");\n } else {\n const tokenPrice = normalizedPrice;\n const reservePrice = BigNumber.from(listing.reservePrice);\n invariant(tokenPrice.gte(reservePrice), \"Bid price is too low based on reserve price\");\n }\n const quantity = BigNumber.from(listing.quantity);\n const value = normalizedPrice.mul(quantity);\n const overrides = (await this.contractWrapper.getCallOverrides()) || {};\n await setErc20Allowance(this.contractWrapper, value, listing.currencyContractAddress, overrides);\n return {\n receipt: await this.contractWrapper.sendTransaction(\"offer\", [listingId, listing.quantity, listing.currencyContractAddress, normalizedPrice, ethers.constants.MaxUint256], overrides)\n };\n }\n\n /**\n * Cancel Auction Listing\n *\n * @remarks Cancel an auction listing on the marketplace\n *\n * @example\n * ```javascript\n * // The listing ID of the auction listing you want to cancel\n * const listingId = \"0\";\n *\n * await contract.auction.cancelListing(listingId);\n * ```\n */\n async cancelListing(listingId) {\n const listing = await this.validateListing(BigNumber.from(listingId));\n const now = BigNumber.from(Math.floor(Date.now() / 1000));\n const startTime = BigNumber.from(listing.startTimeInEpochSeconds);\n const offers = await this.contractWrapper.readContract.winningBid(listingId);\n if (now.gt(startTime) && offers.offeror !== constants.AddressZero) {\n throw new AuctionAlreadyStartedError(listingId.toString());\n }\n return {\n receipt: await this.contractWrapper.sendTransaction(\"closeAuction\", [BigNumber.from(listingId), await this.contractWrapper.getSignerAddress()])\n };\n }\n\n /**\n * Close the Auction for the buyer or the seller\n *\n * @remarks Closes the Auction and executes the sale for the buyer or the seller.\n *\n * @example\n * ```javascript\n * // The listing ID of the auction listing you want to close\n * const listingId = \"0\";\n * await contract.auction.closeListing(listingId);\n * ```\n *\n * @param listingId - the auction listing ud to close\n * @param closeFor - optionally pass the auction creator address or winning bid offeror address to close the auction on their behalf\n */\n async closeListing(listingId, closeFor) {\n if (!closeFor) {\n closeFor = await this.contractWrapper.getSignerAddress();\n }\n const listing = await this.validateListing(BigNumber.from(listingId));\n try {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"closeAuction\", [BigNumber.from(listingId), closeFor])\n };\n } catch (err) {\n if (err.message.includes(\"cannot close auction before it has ended\")) {\n throw new AuctionHasNotEndedError(listingId.toString(), listing.endTimeInEpochSeconds.toString());\n } else {\n throw err;\n }\n }\n }\n\n /**\n * Execute the Auction Sale\n *\n * @remarks Closes the Auction and executes the sale for both parties.\n *\n * @example\n * ```javascript\n * // The listing ID of the auction listing you want to close\n * const listingId = \"0\";\n * await contract.auction.executeSale(listingId);\n * ```\n *\n * @param listingId - the auction listing ud to close\n */\n async executeSale(listingId) {\n const listing = await this.validateListing(BigNumber.from(listingId));\n try {\n const winningBid = await this.getWinningBid(listingId);\n invariant(winningBid, \"No winning bid found\");\n const closeForSeller = this.encoder.encode(\"closeAuction\", [listingId, listing.sellerAddress]);\n const closeForBuyer = this.encoder.encode(\"closeAuction\", [listingId, winningBid.buyerAddress]);\n return await this.contractWrapper.multiCall([closeForSeller, closeForBuyer]);\n } catch (err) {\n if (err.message.includes(\"cannot close auction before it has ended\")) {\n throw new AuctionHasNotEndedError(listingId.toString(), listing.endTimeInEpochSeconds.toString());\n } else {\n throw err;\n }\n }\n }\n\n /**\n * Update an Auction listing with new metadata\n * @param listing - the listing id to update\n */\n async updateListing(listing) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"updateListing\", [listing.id, listing.quantity, listing.reservePrice, listing.buyoutPrice, listing.currencyContractAddress, listing.startTimeInEpochSeconds, listing.endTimeInEpochSeconds])\n };\n }\n\n /**\n * Get the buffer in basis points between offers\n */\n async getBidBufferBps() {\n return this.contractWrapper.readContract.bidBufferBps();\n }\n\n /**\n * returns the minimum bid a user can place to outbid the previous highest bid\n * @param listingId - the listing id of the auction\n */\n async getMinimumNextBid(listingId) {\n // we can fetch all of these at the same time using promise.all\n const [currentBidBufferBps, winningBid, listing] = await Promise.all([this.getBidBufferBps(), this.getWinningBid(listingId), await this.validateListing(BigNumber.from(listingId))]);\n const currentBidOrReservePrice = winningBid ?\n // if there is a winning bid use the value of it\n winningBid.currencyValue.value :\n // if there is no winning bid use the reserve price\n listing.reservePrice;\n const minimumNextBid = currentBidOrReservePrice.add(\n // the addition of the current bid and the buffer\n // (have to divide by 10000 to get the fraction of the buffer (since it's in basis points))\n currentBidOrReservePrice.mul(currentBidBufferBps).div(10000));\n\n // it's more useful to return a currency value here\n return fetchCurrencyValue(this.contractWrapper.getProvider(), listing.currencyContractAddress, minimumNextBid);\n }\n\n /** ******************************\n * PRIVATE FUNCTIONS\n *******************************/\n\n /**\n * Throws error if listing could not be found\n *\n * @param listingId - Listing to check for\n */\n async validateListing(listingId) {\n try {\n return await this.getListing(listingId);\n } catch (err) {\n console.error(`Error getting the listing with id ${listingId}`);\n throw err;\n }\n }\n\n /**\n * Helper method maps the auction listing to the auction listing interface.\n *\n * @internal\n * @param listing - The listing to map, as returned from the contract.\n * @returns - The mapped interface.\n */\n async mapListing(listing) {\n return {\n assetContractAddress: listing.assetContract,\n buyoutPrice: BigNumber.from(listing.buyoutPricePerToken),\n currencyContractAddress: listing.currency,\n buyoutCurrencyValuePerToken: await fetchCurrencyValue(this.contractWrapper.getProvider(), listing.currency, listing.buyoutPricePerToken),\n id: listing.listingId.toString(),\n tokenId: listing.tokenId,\n quantity: listing.quantity,\n startTimeInEpochSeconds: listing.startTime,\n asset: await fetchTokenMetadataForContract(listing.assetContract, this.contractWrapper.getProvider(), listing.tokenId, this.storage),\n reservePriceCurrencyValuePerToken: await fetchCurrencyValue(this.contractWrapper.getProvider(), listing.currency, listing.reservePricePerToken),\n reservePrice: BigNumber.from(listing.reservePricePerToken),\n endTimeInEpochSeconds: listing.endTime,\n sellerAddress: listing.tokenOwner,\n type: ListingType.Auction\n };\n }\n}\n\n/**\n * @internal\n */\nasync function getCompositePluginABI(address, abi, provider, options, storage) {\n let pluginABIs = [];\n try {\n // check if contract is plugin-pattern\n const isPluginRouter = isFeatureEnabled(AbiSchema.parse(abi), \"PluginRouter\");\n if (isPluginRouter) {\n const contract = new ContractWrapper(provider, address, RouterABI, options);\n const pluginMap = await contract.readContract.getAllPlugins();\n\n // get extension addresses\n const allPlugins = pluginMap.map(item => item.pluginAddress);\n const plugins = Array.from(new Set(allPlugins));\n\n // get ABIs of extension contracts\n pluginABIs = await getPluginABI(plugins, provider, storage);\n }\n } catch (err) {}\n return pluginABIs.length > 0 ? joinABIs([abi, ...pluginABIs]) : abi;\n}\n\n/**\n * @internal\n */\nasync function getPluginABI(addresses, provider, storage) {\n return (await Promise.all(addresses.map(address => fetchContractMetadataFromAddress(address, provider, storage).catch(err => {\n console.error(`Failed to fetch plug-in for ${address}`, err);\n return {\n abi: []\n };\n })))).map(metadata => metadata.abi);\n}\n\n/**\n * @internal\n */\nfunction joinABIs(abis) {\n const parsedABIs = abis.map(abi => AbiSchema.parse(abi)).flat();\n const filteredABIs = unique(parsedABIs, (a, b) => {\n return a.name === b.name && a.type === b.type && a.inputs.length === b.inputs.length;\n });\n const finalABIs = filteredABIs.filter(item => item.type !== \"constructor\");\n return AbiSchema.parse(finalABIs);\n}\n\nconst DropErc20ContractInput = CommonContractSchema.merge(MerkleSchema).merge(CommonSymbolSchema);\nconst DropErc20ContractOutput = CommonContractOutputSchema.merge(MerkleSchema).merge(CommonSymbolSchema);\nconst DropErc20ContractDeploy = DropErc20ContractInput.merge(CommonPlatformFeeSchema).merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema);\nconst DropErc20ContractSchema = {\n deploy: DropErc20ContractDeploy,\n output: DropErc20ContractOutput,\n input: DropErc20ContractInput\n};\n\nconst MultiwrapContractInput = CommonContractSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst MultiwrapContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema).merge(CommonSymbolSchema);\nconst MultiwrapContractDeploy = MultiwrapContractInput.merge(CommonTrustedForwarderSchema);\nconst MultiwrapContractSchema = {\n deploy: MultiwrapContractDeploy,\n output: MultiwrapContractOutput,\n input: MultiwrapContractInput\n};\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nconst EditionDropInitializer = {\n name: \"DropERC1155\",\n contractType: \"edition-drop\",\n schema: DropErc1155ContractSchema,\n roles: [\"admin\", \"minter\", \"transfer\"],\n initialize: async function () {\n for (var _len = arguments.length, _ref = new Array(_len), _key = 0; _key < _len; _key++) {\n _ref[_key] = arguments[_key];\n }\n let [network, address, storage, options] = _ref;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([await EditionDropInitializer.getAbi(address, provider, storage), import('./edition-drop-65202698.esm.js'), provider.getNetwork()]);\n return new contract.EditionDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 2 ? (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC1155.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC1155_V2.json')).default;\n }\n};\nconst EditionInitializer = {\n name: \"TokenERC1155\",\n contractType: \"edition\",\n schema: TokenErc1155ContractSchema,\n roles: [\"admin\", \"minter\", \"transfer\"],\n initialize: async function () {\n for (var _len2 = arguments.length, _ref2 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n _ref2[_key2] = arguments[_key2];\n }\n let [network, address, storage, options] = _ref2;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([EditionInitializer.getAbi(address, provider, storage), import('./edition-60d8f63b.esm.js'), provider.getNetwork()]);\n return new contract.Edition(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/TokenERC1155.json')).default;\n }\n};\nconst MarketplaceInitializer = {\n name: \"Marketplace\",\n contractType: \"marketplace\",\n schema: MarketplaceContractSchema,\n roles: [\"admin\", \"lister\", \"asset\"],\n initialize: async function () {\n for (var _len3 = arguments.length, _ref3 = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n _ref3[_key3] = arguments[_key3];\n }\n let [network, address, storage, options] = _ref3;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([MarketplaceInitializer.getAbi(address, provider, storage), import('./marketplace-288160ba.esm.js'), provider.getNetwork()]);\n return new contract.Marketplace(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Marketplace.json')).default;\n }\n};\nconst MarketplaceV3Initializer = {\n name: \"MarketplaceRouter\",\n contractType: \"marketplace-v3\",\n schema: MarketplaceContractSchema,\n roles: [\"admin\", \"lister\", \"asset\"],\n initialize: async function () {\n for (var _len4 = arguments.length, _ref4 = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n _ref4[_key4] = arguments[_key4];\n }\n let [network, address, storage, options] = _ref4;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([MarketplaceV3Initializer.getAbi(address, provider, storage), import('./marketplacev3-dc1b1c19.esm.js'), provider.getNetwork()]);\n const parsedABI = typeof abi === \"string\" ? JSON.parse(abi) : abi;\n const compositeABI = await getCompositePluginABI(address, AbiSchema.parse(parsedABI), provider, options, storage);\n return new contract.MarketplaceV3(network, address, storage, options, compositeABI, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/MarketplaceV3.json')).default;\n }\n};\nconst MultiwrapInitializer = {\n name: \"Multiwrap\",\n contractType: \"multiwrap\",\n schema: MultiwrapContractSchema,\n roles: [\"admin\", \"transfer\", \"minter\", \"unwrap\", \"asset\"],\n initialize: async function () {\n for (var _len5 = arguments.length, _ref5 = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n _ref5[_key5] = arguments[_key5];\n }\n let [network, address, storage, options] = _ref5;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([MultiwrapInitializer.getAbi(address, provider, storage), import('./multiwrap-c376b481.esm.js'), provider.getNetwork()]);\n return new contract.Multiwrap(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Multiwrap.json')).default;\n }\n};\nconst NFTCollectionInitializer = {\n name: \"TokenERC721\",\n contractType: \"nft-collection\",\n schema: TokenErc721ContractSchema,\n roles: [\"admin\", \"minter\", \"transfer\"],\n initialize: async function () {\n for (var _len6 = arguments.length, _ref6 = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n _ref6[_key6] = arguments[_key6];\n }\n let [network, address, storage, options] = _ref6;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([NFTCollectionInitializer.getAbi(address, provider, storage), import('./nft-collection-ff40eb56.esm.js'), provider.getNetwork()]);\n return new contract.NFTCollection(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/TokenERC721.json')).default;\n }\n};\nconst NFTDropInitializer = {\n name: \"DropERC721\",\n contractType: \"nft-drop\",\n schema: DropErc721ContractSchema,\n roles: [\"admin\", \"minter\", \"transfer\"],\n initialize: async function () {\n for (var _len7 = arguments.length, _ref7 = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n _ref7[_key7] = arguments[_key7];\n }\n let [network, address, storage, options] = _ref7;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([NFTDropInitializer.getAbi(address, provider, storage), import('./nft-drop-81892ef8.esm.js'), provider.getNetwork()]);\n return new contract.NFTDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 3 ? (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC721.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC721_V3.json')).default;\n }\n};\nconst PackInitializer = {\n name: \"Pack\",\n contractType: \"pack\",\n schema: PackContractSchema,\n roles: [\"admin\", \"minter\", \"asset\", \"transfer\"],\n initialize: async function () {\n for (var _len8 = arguments.length, _ref8 = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n _ref8[_key8] = arguments[_key8];\n }\n let [network, address, storage, options] = _ref8;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([PackInitializer.getAbi(address, provider, storage), import('./pack-8ce2cf88.esm.js'), provider.getNetwork()]);\n return new contract.Pack(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Pack.json')).default;\n }\n};\nconst SignatureDropInitializer = {\n name: \"SignatureDrop\",\n contractType: \"signature-drop\",\n schema: DropErc721ContractSchema,\n roles: [\"admin\", \"minter\", \"transfer\"],\n initialize: async function () {\n for (var _len9 = arguments.length, _ref9 = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n _ref9[_key9] = arguments[_key9];\n }\n let [network, address, storage, options] = _ref9;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([SignatureDropInitializer.getAbi(address, provider, storage), import('./signature-drop-ead2d4d3.esm.js'), provider.getNetwork()]);\n return new contract.SignatureDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 4 ? (await import('@thirdweb-dev/contracts-js/dist/abis/SignatureDrop.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/SignatureDrop_V4.json')).default;\n }\n};\nconst SplitInitializer = {\n name: \"Split\",\n contractType: \"split\",\n schema: SplitsContractSchema,\n roles: [\"admin\"],\n initialize: async function () {\n for (var _len10 = arguments.length, _ref10 = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n _ref10[_key10] = arguments[_key10];\n }\n let [network, address, storage, options] = _ref10;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([SplitInitializer.getAbi(address, provider, storage), import('./split-1f455fcb.esm.js'), provider.getNetwork()]);\n return new contract.Split(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/Split.json')).default;\n }\n};\nconst TokenDropInitializer = {\n name: \"DropERC20\",\n contractType: \"token-drop\",\n schema: DropErc20ContractSchema,\n roles: [\"admin\", \"transfer\"],\n initialize: async function () {\n for (var _len11 = arguments.length, _ref11 = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n _ref11[_key11] = arguments[_key11];\n }\n let [network, address, storage, options] = _ref11;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([TokenDropInitializer.getAbi(address, provider, storage), import('./token-drop-4736ee0c.esm.js'), provider.getNetwork()]);\n return new contract.TokenDrop(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n const contractInfo = await getContractInfo(address, provider);\n return !contractInfo || contractInfo.version > 2 ? (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC20.json')).default : (await import('@thirdweb-dev/contracts-js/dist/abis/DropERC20_V2.json')).default;\n }\n};\nconst TokenInitializer = {\n name: \"TokenERC20\",\n contractType: \"token\",\n schema: TokenErc20ContractSchema,\n roles: [\"admin\", \"minter\", \"transfer\"],\n initialize: async function () {\n for (var _len12 = arguments.length, _ref12 = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n _ref12[_key12] = arguments[_key12];\n }\n let [network, address, storage, options] = _ref12;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([TokenInitializer.getAbi(address, provider, storage), import('./token-4a9a609f.esm.js'), provider.getNetwork()]);\n return new contract.Token(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/TokenERC20.json')).default;\n }\n};\nconst VoteInitializer = {\n name: \"VoteERC20\",\n contractType: \"vote\",\n schema: VoteContractSchema,\n roles: [],\n initialize: async function () {\n for (var _len13 = arguments.length, _ref13 = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n _ref13[_key13] = arguments[_key13];\n }\n let [network, address, storage, options] = _ref13;\n const [, provider] = getSignerAndProvider(network, options);\n const [abi, contract, _network] = await Promise.all([VoteInitializer.getAbi(address, provider, storage), import('./vote-55e5c7df.esm.js'), provider.getNetwork()]);\n return new contract.Vote(network, address, storage, options, abi, _network.chainId);\n },\n getAbi: async (address, provider, storage) => {\n const abi = await fetchAbiFromAddress(address, provider, storage);\n if (abi) {\n return abi;\n }\n // Deprecated - only needed for backwards compatibility with non-released contracts - should remove in v4\n return (await import('@thirdweb-dev/contracts-js/dist/abis/VoteERC20.json')).default;\n }\n};\nasync function getContractInfo(address, provider) {\n try {\n return await getPrebuiltInfo(address, provider);\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * a map from contractType -> contract metadata\n * @internal\n */\nconst PREBUILT_CONTRACTS_MAP = {\n [EditionDropInitializer.contractType]: EditionDropInitializer,\n [EditionInitializer.contractType]: EditionInitializer,\n [MarketplaceInitializer.contractType]: MarketplaceInitializer,\n [MarketplaceV3Initializer.contractType]: MarketplaceV3Initializer,\n [MultiwrapInitializer.contractType]: MultiwrapInitializer,\n [NFTCollectionInitializer.contractType]: NFTCollectionInitializer,\n [NFTDropInitializer.contractType]: NFTDropInitializer,\n [PackInitializer.contractType]: PackInitializer,\n [SignatureDropInitializer.contractType]: SignatureDropInitializer,\n [SplitInitializer.contractType]: SplitInitializer,\n [TokenDropInitializer.contractType]: TokenDropInitializer,\n [TokenInitializer.contractType]: TokenInitializer,\n [VoteInitializer.contractType]: VoteInitializer\n};\nconst SmartContract$1 = {\n name: \"SmartContract\",\n contractType: \"custom\",\n schema: {},\n roles: ALL_ROLES\n};\nconst CONTRACTS_MAP = {\n ...PREBUILT_CONTRACTS_MAP,\n [SmartContract$1.contractType]: SmartContract$1\n};\n\n/**\n * @internal\n */\nfunction getContractTypeForRemoteName(name) {\n return Object.values(CONTRACTS_MAP).find(contract => contract.name === name)?.contractType || \"custom\";\n}\nfunction getContractName(type) {\n return Object.values(CONTRACTS_MAP).find(contract => contract.contractType === type)?.name;\n}\n\n/**\n * Have an official Application URI for this contract.\n * @remarks Configure an official Application URI for this contract.\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const appURI = await contract.appuri.get();\n * appURI = \"ipfs://some_ipfs_hash\";\n *\n * await contract.appuri.set(appURI)\n * ```\n * @public\n */\nclass ContractAppURI {\n constructor(contractWrapper, metadata) {\n _defineProperty(this, \"featureName\", FEATURE_APPURI.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"metadata\", void 0);\n this.contractWrapper = contractWrapper;\n this.metadata = metadata;\n }\n\n /**\n * Get the appURI for the contract\n * @returns the appURI object\n */\n async get() {\n if (detectContractFeature(this.contractWrapper, \"AppURI\")) {\n return await this.contractWrapper.readContract.appURI();\n }\n return (await this.metadata.get()).appURI || \"\";\n }\n\n /**\n * Set the appURI for the contract\n * @param appURI - the uri to set (typically an IPFS hash)\n */\n async set(appURI) {\n if (detectContractFeature(this.contractWrapper, \"AppURI\")) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setAppURI\", [appURI])\n };\n }\n return await this.metadata.update({\n appURI\n });\n }\n}\n\n/**\n * Listen to Contract events in real time\n * @public\n */\nclass ContractEvents {\n constructor(contractWrapper) {\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Subscribe to transactions in this contract.\n * @remarks Will emit an \"event\" object containing the transaction status ('submitted' and 'completed') and hash\n * @example\n * ```javascript\n * contract.events.addTransactionListener((event) => {\n * console.log(event);\n * }\n * ```\n * @param listener - the callback function that will be called on every transaction\n * @public\n */\n addTransactionListener(listener) {\n this.contractWrapper.addListener(EventType.Transaction, listener);\n }\n\n /**\n * Remove a transaction listener\n * @remarks Remove a listener that was added with addTransactionListener\n * @example\n * ```javascript\n * contract.events.removeTransactionListener((event) => {\n * console.log(event);\n * }\n * ```\n * @param listener - the callback function to remove\n * @public\n */\n removeTransactionListener(listener) {\n this.contractWrapper.off(EventType.Transaction, listener);\n }\n\n /**\n * Subscribe to contract events\n * @remarks You can add a listener for any contract event to run a function when\n * the event is emitted. For example, if you wanted to listen for a \"TokensMinted\" event,\n * you could do the following:\n * @example\n * ```javascript\n * contract.events.addEventListener(\"TokensMinted\", (event) => {\n * console.log(event);\n * });\n * ```\n * @public\n * @param eventName - the event name as defined in the contract\n * @param listener - the callback function that will be called on every new event\n * @returns a function to un-subscribe from the event\n */\n addEventListener(eventName, listener) {\n // validates event, throws error if not found\n const event = this.contractWrapper.readContract.interface.getEvent(eventName);\n const address = this.contractWrapper.readContract.address;\n const filter = {\n address,\n topics: [this.contractWrapper.readContract.interface.getEventTopic(event)]\n };\n const wrappedListener = log => {\n const parsedLog = this.contractWrapper.readContract.interface.parseLog(log);\n listener(this.toContractEvent(parsedLog.eventFragment, parsedLog.args, log));\n };\n this.contractWrapper.getProvider().on(filter, wrappedListener);\n return () => {\n this.contractWrapper.getProvider().off(filter, wrappedListener);\n };\n }\n\n /**\n * Listen to all events emitted from this contract\n *\n * @example\n * ```javascript\n * contract.events.listenToAllEvents((event) => {\n * console.log(event.eventName) // the name of the emitted event\n * console.log(event.data) // event payload\n * }\n * ```\n * @public\n * @param listener - the callback function that will be called on every new event\n * @returns A function that can be called to stop listening to events\n */\n listenToAllEvents(listener) {\n const address = this.contractWrapper.readContract.address;\n const filter = {\n address\n };\n const wrappedListener = log => {\n try {\n const parsedLog = this.contractWrapper.readContract.interface.parseLog(log);\n listener(this.toContractEvent(parsedLog.eventFragment, parsedLog.args, log));\n } catch (e) {\n console.error(\"Could not parse event:\", log, e);\n }\n };\n this.contractWrapper.getProvider().on(filter, wrappedListener);\n return () => {\n this.contractWrapper.getProvider().off(filter, wrappedListener);\n };\n }\n\n /**\n * Remove an event listener from this contract\n * @remarks Remove a listener that was added with addEventListener\n * @example\n * ```javascript\n * contract.events.removeEventListener(\"TokensMinted\", (event) => {\n * console.log(event);\n * });\n * ```\n * @public\n * @param eventName - the event name as defined in the contract\n * @param listener - the listener to unregister\n */\n removeEventListener(eventName, listener) {\n // validates event, throws error if not found\n const event = this.contractWrapper.readContract.interface.getEvent(eventName);\n this.contractWrapper.readContract.off(event.name, listener);\n }\n\n /**\n * Remove all listeners on this contract\n * @remarks Remove all listeners from a contract\n * @example\n * ```javascript\n * contract.events.removeAllListeners();\n * ```\n * @public\n */\n removeAllListeners() {\n this.contractWrapper.readContract.removeAllListeners();\n const address = this.contractWrapper.readContract.address;\n const filter = {\n address\n };\n this.contractWrapper.getProvider().removeAllListeners(filter);\n }\n\n /**\n * Get All Events\n * @remarks Get a list of all the events emitted from this contract during the specified time period\n * @example\n * ```javascript\n * // Optionally pass in filters to limit the blocks from which events are retrieved\n * const filters = {\n * fromBlock: 0,\n * toBlock: 1000000,\n * }\n * const events = await contract.events.getAllEvents(filters);\n * console.log(events[0].eventName);\n * console.log(events[0].data);\n * ```\n *\n * @param filters - Specify the from and to block numbers to get events for, defaults to all blocks\n * @returns The event objects of the events emitted with event names and data for each event\n */\n async getAllEvents() {\n let filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n fromBlock: 0,\n toBlock: \"latest\",\n order: \"desc\"\n };\n const events = await this.contractWrapper.readContract.queryFilter({}, filters.fromBlock, filters.toBlock);\n const orderedEvents = events.sort((a, b) => {\n return filters.order === \"desc\" ? b.blockNumber - a.blockNumber : a.blockNumber - b.blockNumber;\n });\n return this.parseEvents(orderedEvents);\n }\n\n /**\n * Get Events\n * @remarks Get a list of the events of a specific type emitted from this contract during the specified time period\n * @example\n * ```javascript\n * // The name of the event to get logs for\n * const eventName = \"Transfer\";\n *\n * // Optionally pass in options to limit the blocks from which events are retrieved\n * const options = {\n * fromBlock: 0,\n * toBlock: 1000000, // can also pass \"latest\"\n * order: \"desc\",\n * // Configure event filters (filter on indexed event parameters)\n * filters: {\n * from: \"0x...\",\n * to: \"0x...\"\n * }\n * };\n *\n * const events = await contract.events.getEvents(eventName, options);\n * console.log(events[0].eventName);\n * console.log(events[0].data);\n * ```\n *\n * @param eventName - The name of the event to get logs for\n * @param options - Specify the from and to block numbers to get events for, defaults to all blocks. @see EventQueryOptions\n * @returns The requested event objects with event data\n */\n async getEvents(eventName) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n fromBlock: 0,\n toBlock: \"latest\",\n order: \"desc\"\n };\n const event = this.contractWrapper.readContract.interface.getEvent(eventName);\n const eventInterface = this.contractWrapper.readContract.interface.getEvent(eventName);\n const args = options.filters ? eventInterface.inputs.map(e => options.filters[e.name]) : [];\n const filter = this.contractWrapper.readContract.filters[event.name](...args);\n const events = await this.contractWrapper.readContract.queryFilter(filter, options.fromBlock, options.toBlock);\n const orderedEvents = events.sort((a, b) => {\n return options.order === \"desc\" ? b.blockNumber - a.blockNumber : a.blockNumber - b.blockNumber;\n });\n return this.parseEvents(orderedEvents);\n }\n parseEvents(events) {\n return events.map(e => {\n const transaction = Object.fromEntries(Object.entries(e).filter(a => typeof a[1] !== \"function\" && a[0] !== \"args\"));\n if (e.args) {\n const entries = Object.entries(e.args);\n const args = entries.slice(entries.length / 2, entries.length);\n const data = {};\n for (const [key, value] of args) {\n data[key] = value;\n }\n return {\n eventName: e.event || \"\",\n data: data,\n transaction\n };\n }\n return {\n eventName: e.event || \"\",\n data: {},\n transaction\n };\n });\n }\n toContractEvent(event, args, rawLog) {\n const transaction = Object.fromEntries(Object.entries(rawLog).filter(a => typeof a[1] !== \"function\" && a[0] !== \"args\"));\n const results = {};\n event.inputs.forEach((param, index) => {\n if (Array.isArray(args[index])) {\n const components = param.components;\n if (components) {\n const arr = args[index];\n if (param.type === \"tuple[]\") {\n // tuple[]\n const objArray = [];\n for (let i = 0; i < arr.length; i++) {\n const tuple = arr[i];\n const obj = {};\n for (let j = 0; j < components.length; j++) {\n const name = components[j].name;\n obj[name] = tuple[j];\n }\n objArray.push(obj);\n }\n results[param.name] = objArray;\n } else {\n // simple tuple\n const obj = {};\n for (let i = 0; i < components.length; i++) {\n const name = components[i].name;\n obj[name] = arr[i];\n }\n results[param.name] = obj;\n }\n }\n } else {\n results[param.name] = args[index];\n }\n });\n return {\n eventName: event.name,\n data: results,\n transaction\n };\n }\n}\n\n/**\n * Allows overriding transaction behavior for this contract\n * @public\n */\nclass ContractInterceptor {\n constructor(contractWrapper) {\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * The next transaction executed will add/replace any overrides passed via the passed in hook.\n * @remarks Overridden values will be applied to the next transaction executed.\n * @example\n * ```javascript\n * contract.interceptor.overrideNextTransaction(() => ({\n * gasLimit: 3000000,\n * }));\n * ```\n * @param hook - the hook to add or replace any CallOverrides (gas limit, gas price, nonce, from, value, etc...)\n * @public\n */\n overrideNextTransaction(hook) {\n this.contractWrapper.withTransactionOverride(hook);\n }\n}\n\n/**\n * Handle platform fees and recipients\n * @remarks Configure platform fees for a contract, which can be applied on certain paid transactions\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * const feeInfo = await contract.platformFee.get();\n * await contract.platformFee.set({\n * platform_fee_basis_points: 100, // 1% fee\n * platform_fee_recipient: \"0x...\" // the fee recipient\n * })\n * ```\n * @public\n */\nclass ContractPlatformFee {\n constructor(contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_PLATFORM_FEE.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Get the platform fee recipient and basis points\n * * @example\n * ```javascript\n * const feeInfo = await contract.platformFee.get();\n * ```\n * @twfeature PlatformFee\n */\n async get() {\n const [platformFeeRecipient, platformFeeBps] = await this.contractWrapper.readContract.getPlatformFeeInfo();\n return CommonPlatformFeeSchema.parse({\n platform_fee_recipient: platformFeeRecipient,\n platform_fee_basis_points: platformFeeBps\n });\n }\n\n /**\n * Set the platform fee recipient and basis points\n * @param platformFeeInfo - the platform fee information\n * ```javascript\n * await contract.platformFee.set({\n * platform_fee_basis_points: 100, // 1% fee\n * platform_fee_recipient: \"0x...\" // the fee recipient\n * })\n * ```\n * @twfeature PlatformFee\n */\n async set(platformFeeInfo) {\n const parsed = CommonPlatformFeeSchema.parse(platformFeeInfo);\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setPlatformFeeInfo\", [parsed.platform_fee_recipient, parsed.platform_fee_basis_points])\n };\n }\n}\n\n/**\n * Handles publish metadata for a contract\n * @internal\n */\nclass ContractPublishedMetadata {\n constructor(contractWrapper, storage) {\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"_cachedMetadata\", void 0);\n this.contractWrapper = contractWrapper;\n this.storage = storage;\n }\n\n /**\n * Get the published metadata for this contract\n * @public\n */\n async get() {\n if (this._cachedMetadata) {\n return this._cachedMetadata;\n }\n this._cachedMetadata = await fetchContractMetadataFromAddress(this.contractWrapper.readContract.address, this.contractWrapper.getProvider(), this.storage);\n return this._cachedMetadata;\n }\n\n /**\n * @public\n */\n async extractFunctions() {\n let publishedMetadata;\n try {\n publishedMetadata = await this.get();\n } catch (e) {\n // ignore for built-in contracts\n }\n // to construct a contract we already **have** to have the abi on the contract wrapper, so there is no reason to look fetch it again (means this function can become synchronous as well!)\n return extractFunctionsFromAbi(AbiSchema.parse(this.contractWrapper.abi), publishedMetadata?.metadata);\n }\n\n /**\n * @public\n */\n async extractEvents() {\n let publishedMetadata;\n try {\n publishedMetadata = await this.get();\n } catch (e) {\n // ignore for built-in contracts\n }\n // to construct a contract we already **have** to have the abi on the contract wrapper, so there is no reason to look fetch it again (means this function can become synchronous as well!)\n return extractEventsFromAbi(AbiSchema.parse(this.contractWrapper.abi), publishedMetadata?.metadata);\n }\n}\n\n/**\n * Custom contract dynamic class with feature detection\n *\n * @example\n *\n * ```javascript\n * import { ThirdwebSDK } from \"@thirdweb-dev/sdk\";\n *\n * const sdk = new ThirdwebSDK(provider);\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n *\n * // call any function in your contract\n * await contract.call(\"myCustomFunction\", param1, param2);\n *\n * // if your contract follows the ERC721 standard, contract.nft will be present\n * const allNFTs = await contract.erc721.query.all()\n *\n * // if your contract extends IMintableERC721, contract.nft.mint() will be available\n * const tx = await contract.erc721.mint({\n * name: \"Cool NFT\",\n * image: readFileSync(\"some_image.png\"),\n * });\n * ```\n *\n * @beta\n */\nclass SmartContract {\n // utilities\n\n /**\n * Handle royalties\n */\n get royalties() {\n return assertEnabled(this.detectRoyalties(), FEATURE_ROYALTY);\n }\n\n /**\n * Handle permissions\n */\n get roles() {\n return assertEnabled(this.detectRoles(), FEATURE_PERMISSIONS);\n }\n\n /**\n * Handle primary sales\n */\n get sales() {\n return assertEnabled(this.detectPrimarySales(), FEATURE_PRIMARY_SALE);\n }\n\n /**\n * Handle platform fees\n */\n get platformFees() {\n return assertEnabled(this.detectPlatformFees(), FEATURE_PLATFORM_FEE);\n }\n\n /**\n * Set and get the owner of the contract\n */\n get owner() {\n return assertEnabled(this.detectOwnable(), FEATURE_OWNER);\n }\n\n /**\n * Auto-detects ERC20 standard functions.\n */\n get erc20() {\n return assertEnabled(this.detectErc20(), FEATURE_TOKEN);\n }\n\n /**\n * Auto-detects ERC721 standard functions.\n */\n get erc721() {\n return assertEnabled(this.detectErc721(), FEATURE_NFT);\n }\n\n /**\n * Auto-detects ERC1155 standard functions.\n */\n get erc1155() {\n return assertEnabled(this.detectErc1155(), FEATURE_EDITION);\n }\n get chainId() {\n return this._chainId;\n }\n constructor(network, address, abi, storage) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n let chainId = arguments.length > 5 ? arguments[5] : undefined;\n let contractWrapper = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new ContractWrapper(network, address, abi, options);\n _defineProperty(this, \"contractWrapper\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"events\", void 0);\n _defineProperty(this, \"interceptor\", void 0);\n _defineProperty(this, \"encoder\", void 0);\n _defineProperty(this, \"estimator\", void 0);\n _defineProperty(this, \"publishedMetadata\", void 0);\n _defineProperty(this, \"abi\", void 0);\n _defineProperty(this, \"metadata\", void 0);\n _defineProperty(this, \"appURI\", void 0);\n _defineProperty(this, \"_chainId\", void 0);\n this._chainId = chainId;\n this.storage = storage;\n this.contractWrapper = contractWrapper;\n this.abi = abi;\n this.events = new ContractEvents(this.contractWrapper);\n this.encoder = new ContractEncoder(this.contractWrapper);\n this.interceptor = new ContractInterceptor(this.contractWrapper);\n this.estimator = new GasCostEstimator(this.contractWrapper);\n this.publishedMetadata = new ContractPublishedMetadata(this.contractWrapper, this.storage);\n this.metadata = new ContractMetadata(this.contractWrapper, CustomContractSchema, this.storage);\n this.appURI = new ContractAppURI(this.contractWrapper, this.metadata);\n }\n onNetworkUpdated(network) {\n this.contractWrapper.updateSignerOrProvider(network);\n }\n getAddress() {\n return this.contractWrapper.readContract.address;\n }\n\n /**\n * Call any function on this contract\n * @example\n * ```javascript\n * // read functions will return the data from the contract\n * const myValue = await contract.call(\"myReadFunction\");\n * console.log(myValue);\n *\n * // write functions will return the transaction receipt\n * const tx = await contract.call(\"myWriteFunction\", arg1, arg2);\n * const receipt = tx.receipt;\n *\n * // Optionally override transaction options\n * await contract.call(\"myWriteFunction\", arg1, arg2, {\n * gasLimit: 1000000, // override default gas limit\n * value: ethers.utils.parseEther(\"0.1\"), // send 0.1 ether with the contract call\n * };\n * ```\n * @param functionName - the name of the function to call\n * @param args - the arguments of the function\n */\n async call(functionName) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.contractWrapper.call(functionName, ...args);\n }\n\n /** ********************\n * FEATURE DETECTION\n * ********************/\n\n detectRoyalties() {\n if (detectContractFeature(this.contractWrapper, \"Royalty\")) {\n // ContractMetadata is stateless, it's fine to create a new one here\n // This also makes it not order dependent in the feature detection process\n const metadata = new ContractMetadata(this.contractWrapper, CustomContractSchema, this.storage);\n return new ContractRoyalty(this.contractWrapper, metadata);\n }\n return undefined;\n }\n detectRoles() {\n if (detectContractFeature(this.contractWrapper, \"Permissions\")) {\n return new ContractRoles(this.contractWrapper, ALL_ROLES);\n }\n return undefined;\n }\n detectPrimarySales() {\n if (detectContractFeature(this.contractWrapper, \"PrimarySale\")) {\n return new ContractPrimarySale(this.contractWrapper);\n }\n return undefined;\n }\n detectPlatformFees() {\n if (detectContractFeature(this.contractWrapper, \"PlatformFee\")) {\n return new ContractPlatformFee(this.contractWrapper);\n }\n return undefined;\n }\n detectErc20() {\n if (detectContractFeature(this.contractWrapper, \"ERC20\")) {\n return new Erc20(this.contractWrapper, this.storage, this.chainId);\n }\n return undefined;\n }\n detectErc721() {\n if (detectContractFeature(this.contractWrapper, \"ERC721\")) {\n return new Erc721(this.contractWrapper, this.storage, this.chainId);\n }\n return undefined;\n }\n detectErc1155() {\n if (detectContractFeature(this.contractWrapper, \"ERC1155\")) {\n return new Erc1155(this.contractWrapper, this.storage, this.chainId);\n }\n return undefined;\n }\n detectOwnable() {\n if (detectContractFeature(this.contractWrapper, \"Ownable\")) {\n return new ContractOwner(this.contractWrapper);\n }\n return undefined;\n }\n}\n\nconst MAX_LENGTH = 256;\nconst NUMERIC_IDENTIFIER = \"0|[1-9]\\\\d*\";\nconst MAIN_VERSION_IDENTIFIER = `(${NUMERIC_IDENTIFIER})\\\\.(${NUMERIC_IDENTIFIER})\\\\.(${NUMERIC_IDENTIFIER})`;\nconst REGEX_MAIN_VERSION = new RegExp(MAIN_VERSION_IDENTIFIER);\n\n/**\n * @internal\n */\n\n/**\n * @internal\n * @param version\n */\nfunction toSemver(version) {\n if (version.length > MAX_LENGTH) {\n throw new Error(`version is longer than ${MAX_LENGTH} characters`);\n }\n const matches = version.trim().match(REGEX_MAIN_VERSION);\n if (!matches || matches?.length !== 4) {\n throw new Error(`${version} is not a valid semantic version. Should be in the format of major.minor.patch. Ex: 0.4.1`);\n }\n const major = Number(matches[1]);\n const minor = Number(matches[2]);\n const patch = Number(matches[3]);\n const versionString = [major, minor, patch].join(\".\");\n return {\n major,\n minor,\n patch,\n versionString\n };\n}\n\n/**\n * @internal\n * @param current\n * @param next\n */\nfunction isIncrementalVersion(current, next) {\n const currentSemver = toSemver(current);\n const nextSemver = toSemver(next);\n if (nextSemver.major > currentSemver.major) {\n return true;\n }\n const eqMajor = nextSemver.major === currentSemver.major;\n if (eqMajor && nextSemver.minor > currentSemver.minor) {\n return true;\n }\n const eqMinor = nextSemver.minor === currentSemver.minor;\n return eqMajor && eqMinor && nextSemver.patch > currentSemver.patch;\n}\nfunction isDowngradeVersion(current, next) {\n const currentSemver = toSemver(current);\n const nextSemver = toSemver(next);\n if (nextSemver.major < currentSemver.major) {\n return true;\n }\n const eqMajor = nextSemver.major === currentSemver.major;\n if (eqMajor && nextSemver.minor < currentSemver.minor) {\n return true;\n }\n const eqMinor = nextSemver.minor === currentSemver.minor;\n return eqMajor && eqMinor && nextSemver.patch < currentSemver.patch;\n}\n\n/**\n * Handles publishing contracts (EXPERIMENTAL)\n * @internal\n */\nclass ContractPublisher extends RPCConnectionHandler {\n constructor(network, options, storage) {\n super(network, options);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"publisher\", void 0);\n this.storage = storage;\n this.publisher = new ContractWrapper(network, getContractPublisherAddress(), ContractPublisherAbi, options);\n }\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n this.publisher.updateSignerOrProvider(network);\n }\n\n /**\n * @internal\n * @param metadataUri\n */\n async extractConstructorParams(metadataUri) {\n return extractConstructorParams(metadataUri, this.storage);\n }\n\n /**\n * @internal\n * @param predeployMetadataUri\n */\n async extractFunctions(predeployMetadataUri) {\n return extractFunctions(predeployMetadataUri, this.storage);\n }\n\n /**\n * @internal\n * @param predeployUri\n */\n async fetchCompilerMetadataFromPredeployURI(predeployUri) {\n return fetchPreDeployMetadata(predeployUri, this.storage);\n }\n\n /**\n * @internal\n * @param prepublishUri\n * @param publisherAddress\n */\n async fetchPrePublishMetadata(prepublishUri, publisherAddress) {\n const preDeployMetadataFetched = await fetchPreDeployMetadata(prepublishUri, this.storage);\n const latestPublishedContract = publisherAddress ? await this.getLatest(publisherAddress, preDeployMetadataFetched.name) : undefined;\n const latestPublishedContractMetadata = latestPublishedContract ? await this.fetchPublishedContractInfo(latestPublishedContract) : undefined;\n return {\n preDeployMetadata: preDeployMetadataFetched,\n latestPublishedContractMetadata\n };\n }\n\n /**\n * @internal\n * @param address\n */\n async fetchCompilerMetadataFromAddress(address) {\n return fetchContractMetadataFromAddress(address, this.getProvider(), this.storage);\n }\n\n /**\n * @internal\n * Get the full information about a published contract\n * @param contract\n */\n async fetchPublishedContractInfo(contract) {\n return {\n name: contract.id,\n publishedTimestamp: contract.timestamp,\n publishedMetadata: await this.fetchFullPublishMetadata(contract.metadataUri)\n };\n }\n\n /**\n * @internal\n * @param publishedMetadataUri\n */\n async fetchFullPublishMetadata(publishedMetadataUri) {\n return fetchExtendedReleaseMetadata(publishedMetadataUri, this.storage);\n }\n\n /**\n * @internal\n * // TODO expose a resolvePublishMetadata(contractAddress, chainId) that handles the dual chain case\n * // TODO will be easy to do with the multichain pattern of 3.0\n * @param compilerMetadataUri\n */\n async resolvePublishMetadataFromCompilerMetadata(compilerMetadataUri) {\n const publishedMetadataUri = await this.publisher.readContract.getPublishedUriFromCompilerUri(compilerMetadataUri);\n if (publishedMetadataUri.length === 0) {\n throw Error(`Could not resolve published metadata URI from ${compilerMetadataUri}`);\n }\n return await Promise.all(publishedMetadataUri.filter(uri => uri.length > 0).map(uri => this.fetchFullPublishMetadata(uri)));\n }\n\n /**\n * @internal\n * TODO clean this up (see method above, too)\n */\n async resolveContractUriFromAddress(address) {\n const contractUri = await resolveContractUriFromAddress(address, this.getProvider());\n invariant(contractUri, \"Could not resolve contract URI from address\");\n return contractUri;\n }\n\n /**\n * @internal\n * @param address\n */\n async fetchContractSourcesFromAddress(address) {\n const metadata = await this.fetchCompilerMetadataFromAddress(address);\n return await fetchSourceFilesFromMetadata(metadata, this.storage);\n }\n\n /**\n * @internal\n * @param profileMetadata\n */\n async updatePublisherProfile(profileMetadata) {\n const signer = this.getSigner();\n invariant(signer, \"A signer is required\");\n const publisher = await signer.getAddress();\n const profileUri = await this.storage.upload(profileMetadata);\n return {\n receipt: await this.publisher.sendTransaction(\"setPublisherProfileUri\", [publisher, profileUri])\n };\n }\n\n /**\n * @internal\n * @param publisherAddress\n */\n async getPublisherProfile(publisherAddress) {\n const profileUri = await this.publisher.readContract.getPublisherProfileUri(publisherAddress);\n if (!profileUri || profileUri.length === 0) {\n return {};\n }\n return ProfileSchemaOutput.parse(await this.storage.downloadJSON(profileUri));\n }\n\n /**\n * @internal\n * @param publisherAddress\n */\n async getAll(publisherAddress) {\n const data = await this.publisher.readContract.getAllPublishedContracts(publisherAddress);\n // since we can fetch from multiple publisher contracts, just keep the latest one in the list\n const map = data.reduce((acc, curr) => {\n // replaces the previous contract with the latest one\n acc[curr.contractId] = curr;\n return acc;\n }, {});\n return Object.entries(map).map(_ref => {\n let [, struct] = _ref;\n return this.toPublishedContract(struct);\n });\n }\n\n /**\n * @internal\n * @param publisherAddress\n * @param contractId\n */\n async getAllVersions(publisherAddress, contractId) {\n const contractStructs = await this.publisher.readContract.getPublishedContractVersions(publisherAddress, contractId);\n if (contractStructs.length === 0) {\n throw Error(\"Not found\");\n }\n return contractStructs.map(d => this.toPublishedContract(d));\n }\n async getVersion(publisherAddress, contractId) {\n let version = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n if (version === \"latest\") {\n return this.getLatest(publisherAddress, contractId);\n }\n const allVersions = await this.getAllVersions(publisherAddress, contractId);\n // get the metadata for each version\n const versionMetadata = await Promise.all(allVersions.map(contract => this.fetchPublishedContractInfo(contract)));\n // find the version that matches the version string\n const versionMatch = versionMetadata.find(metadata => metadata.publishedMetadata.version === version);\n invariant(versionMatch, \"Contract version not found\");\n // match the version back to the contract based on the release timestamp\n return allVersions.find(contract => contract.timestamp === versionMatch.publishedTimestamp);\n }\n async getLatest(publisherAddress, contractId) {\n const model = await this.publisher.readContract.getPublishedContract(publisherAddress, contractId);\n if (model && model.publishMetadataUri) {\n return this.toPublishedContract(model);\n }\n return undefined;\n }\n async publish(predeployUri, extraMetadata) {\n const signer = this.getSigner();\n invariant(signer, \"A signer is required\");\n const publisher = await signer.getAddress();\n const predeployMetadata = await fetchRawPredeployMetadata(predeployUri, this.storage);\n\n // ensure version is incremental\n const latestContract = await this.getLatest(publisher, predeployMetadata.name);\n if (latestContract && latestContract.metadataUri) {\n const latestMetadata = await this.fetchPublishedContractInfo(latestContract);\n const latestVersion = latestMetadata.publishedMetadata.version;\n if (!isIncrementalVersion(latestVersion, extraMetadata.version)) {\n throw Error(`Version ${extraMetadata.version} is not greater than ${latestVersion}`);\n }\n }\n const fetchedBytecode = await (await this.storage.download(predeployMetadata.bytecodeUri)).text();\n const bytecode = fetchedBytecode.startsWith(\"0x\") ? fetchedBytecode : `0x${fetchedBytecode}`;\n const bytecodeHash = utils.solidityKeccak256([\"bytes\"], [bytecode]);\n const contractId = predeployMetadata.name;\n const fullMetadata = FullPublishMetadataSchemaInput.parse({\n ...extraMetadata,\n metadataUri: predeployMetadata.metadataUri,\n bytecodeUri: predeployMetadata.bytecodeUri,\n name: predeployMetadata.name,\n analytics: predeployMetadata.analytics,\n publisher\n });\n const fullMetadataUri = await this.storage.upload(fullMetadata);\n const receipt = await this.publisher.sendTransaction(\"publishContract\", [publisher, contractId, fullMetadataUri, predeployMetadata.metadataUri, bytecodeHash, constants.AddressZero]);\n const events = this.publisher.parseLogs(\"ContractPublished\", receipt.logs);\n if (events.length < 1) {\n throw new Error(\"No ContractPublished event found\");\n }\n const contract = events[0].args.publishedContract;\n return {\n receipt,\n data: async () => this.toPublishedContract(contract)\n };\n }\n async unpublish(publisher, contractId) {\n return {\n receipt: await this.publisher.sendTransaction(\"unpublishContract\", [publisher, contractId])\n };\n }\n toPublishedContract(contractModel) {\n return PublishedContractSchema.parse({\n id: contractModel.contractId,\n timestamp: contractModel.publishTimestamp,\n metadataUri: contractModel.publishMetadataUri\n });\n }\n}\n\n/**\n * @internal\n */\nclass MultichainRegistry {\n constructor(network, storage) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _defineProperty(this, \"registryLogic\", void 0);\n _defineProperty(this, \"registryRouter\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.storage = storage;\n this.registryLogic = new ContractWrapper(network, getMultichainRegistryAddress(), TWRegistryABI, options);\n this.registryRouter = new ContractWrapper(network, getMultichainRegistryAddress(), TWRegistryRouterABI, options);\n }\n async updateSigner(signer) {\n this.registryLogic.updateSignerOrProvider(signer);\n this.registryRouter.updateSignerOrProvider(signer);\n }\n async getContractMetadataURI(chainId, address) {\n return await this.registryLogic.readContract.getMetadataUri(chainId, address);\n }\n async getContractMetadata(chainId, address) {\n const uri = await this.getContractMetadataURI(chainId, address);\n if (!uri) {\n throw new Error(`No metadata URI found for contract ${address} on chain ${chainId}`);\n }\n // TODO define the metadata JSON schema\n return await this.storage.downloadJSON(uri);\n }\n async getContractAddresses(walletAddress) {\n return (await this.registryLogic.readContract.getAll(walletAddress)).filter(result => utils.isAddress(result.deploymentAddress) && result.deploymentAddress.toLowerCase() !== constants.AddressZero).map(result => ({\n address: result.deploymentAddress,\n chainId: result.chainId.toNumber()\n }));\n }\n async addContract(contract) {\n return await this.addContracts([contract]);\n }\n async addContracts(contracts) {\n const deployerAddress = await this.registryRouter.getSignerAddress();\n const encoded = [];\n contracts.forEach(contact => {\n encoded.push(this.registryLogic.readContract.interface.encodeFunctionData(\"add\", [deployerAddress, contact.address, contact.chainId, contact.metadataURI || \"\"]));\n });\n return {\n receipt: await this.registryRouter.multiCall(encoded)\n };\n }\n async removeContract(contract) {\n return await this.removeContracts([contract]);\n }\n async removeContracts(contracts) {\n const deployerAddress = await this.registryRouter.getSignerAddress();\n const encoded = [];\n contracts.forEach(contract => {\n encoded.push(this.registryLogic.readContract.interface.encodeFunctionData(\"remove\", [deployerAddress, contract.address, contract.chainId]));\n });\n return {\n receipt: await this.registryRouter.multiCall(encoded)\n };\n }\n}\n\n/**\n *\n * {@link UserWallet} events that you can subscribe to using `sdk.wallet.events`.\n *\n * @public\n */\n\n/**\n * Connect and Interact with a user wallet\n * @example\n * ```javascript\n * const balance = await sdk.wallet.balance();\n * ```\n * @public\n */\nclass UserWallet {\n constructor(network, options) {\n _defineProperty(this, \"connection\", void 0);\n _defineProperty(this, \"options\", void 0);\n _defineProperty(this, \"events\", new EventEmitter());\n this.connection = new RPCConnectionHandler(network, options);\n this.options = options;\n this.events = new EventEmitter();\n }\n\n // TODO disconnect()\n // TODO switchChain()\n // TODO tokens()\n // TODO NFTs()\n\n // TODO this will become the source of truth of the signer and have every contract read from it\n // TODO separate signer and provider logics\n connect(network) {\n this.connection.updateSignerOrProvider(network);\n this.events.emit(\"signerChanged\", this.connection.getSigner());\n }\n\n /**\n * Transfer native or ERC20 tokens from this wallet to another wallet\n * @example\n * ```javascript\n * // transfer 0.8 ETH\n * await sdk.wallet.transfer(\"0x...\", 0.8);\n * // transfer 0.8 tokens of `tokenContractAddress`\n * await sdk.wallet.transfer(\"0x...\", 0.8, tokenContractAddress);\n * ```\n * @param to - the account to send funds to\n * @param amount - the amount in tokens\n * @param currencyAddress - Optional - ERC20 contract address of the token to transfer\n */\n async transfer(to, amount) {\n let currencyAddress = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NATIVE_TOKEN_ADDRESS;\n const signer = this.requireWallet();\n const amountInWei = await normalizePriceValue(this.connection.getProvider(), amount, currencyAddress);\n if (isNativeToken(currencyAddress)) {\n // native token transfer\n const from = await signer.getAddress();\n const tx = await signer.sendTransaction({\n from,\n to,\n value: amountInWei\n });\n return {\n receipt: await tx.wait()\n };\n } else {\n // ERC20 token transfer\n return {\n receipt: await this.createErc20(currencyAddress).sendTransaction(\"transfer\", [to, amountInWei])\n };\n }\n }\n\n /**\n * Fetch the native or ERC20 token balance of this wallet\n * @example\n * ```javascript\n * // native currency balance\n * const balance = await sdk.wallet.balance();\n * // ERC20 token balance\n * const erc20balance = await sdk.wallet.balance(tokenContractAddress);\n *\n * ```\n */\n async balance() {\n let currencyAddress = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NATIVE_TOKEN_ADDRESS;\n this.requireWallet();\n const provider = this.connection.getProvider();\n let balance;\n if (isNativeToken(currencyAddress)) {\n balance = await provider.getBalance(await this.getAddress());\n } else {\n balance = await this.createErc20(currencyAddress).readContract.balanceOf(await this.getAddress());\n }\n return await fetchCurrencyValue(provider, currencyAddress, balance);\n }\n\n /**\n * Get the currently connected address\n * @example\n * ```javascript\n * const address = await sdk.wallet.getAddress();\n * ```\n */\n async getAddress() {\n return await this.requireWallet().getAddress();\n }\n\n /**\n * Get the currently connected wallet's chainId\n * @internal\n */\n async getChainId() {\n return await this.requireWallet().getChainId();\n }\n\n /**\n * Checks whether there's a signer connected with the SDK\n * @internal\n */\n isConnected() {\n try {\n this.requireWallet();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Sign any message with the connected wallet private key\n * @param message - the message to sign\n * @returns the signed message\n *\n * @example\n * ```javascript\n * // This is the message to be signed\n * const message = \"Sign this message...\";\n *\n * // Now we can sign the message with the connected wallet\n * const signature = await sdk.wallet.sign(message);\n * ```\n */\n async sign(message) {\n const signer = this.requireWallet();\n return await signer.signMessage(message);\n }\n\n /**\n * Sign a typed data structure (EIP712) with the connected wallet private key\n * @param domain - the domain as EIP712 standard\n * @param types - the strcuture and data types as defined by the EIP712 standard\n * @param message - the data to sign\n * @returns the payload and its associated signature\n *\n * @example\n * ```javascript\n * // This is the message to be signed\n * // Now we can sign the message with the connected wallet\n * const { payload, signature } = await sdk.wallet.signTypedData(\n * {\n name: \"MyEIP721Domain\",\n version: \"1\",\n chainId: 1,\n verifyingContract: \"0x...\",\n },\n { MyStruct: [ { name: \"to\", type: \"address\" }, { name: \"quantity\", type: \"uint256\" } ] },\n { to: \"0x...\", quantity: 1 },\n * );\n * ```\n */\n async signTypedData(domain, types, message) {\n return await signTypedDataInternal(this.requireWallet(), domain, types, message);\n }\n\n /**\n * Recover the signing address from a signed message\n * @param message - the original message that was signed\n * @param signature - the signature to recover the address from\n * @returns the address that signed the message\n *\n * @example\n * ```javascript\n * const message = \"Sign this message...\";\n * const signature = await sdk.wallet.sign(message);\n *\n * // Now we can recover the signing address\n * const address = sdk.wallet.recoverAddress(message, signature);\n * ```\n */\n recoverAddress(message, signature) {\n const messageHash = ethers.utils.hashMessage(message);\n const messageHashBytes = ethers.utils.arrayify(messageHash);\n return ethers.utils.recoverAddress(messageHashBytes, signature);\n }\n\n /**\n * Send a raw transaction to the blockchain from the connected wallet\n * @param transactionRequest - raw transaction data to send to the blockchain\n */\n async sendRawTransaction(transactionRequest) {\n const signer = this.requireWallet();\n const tx = await signer.sendTransaction(transactionRequest);\n return {\n receipt: await tx.wait()\n };\n }\n\n /** ***********************\n * PRIVATE FUNCTIONS\n * ***********************/\n\n requireWallet() {\n const signer = this.connection.getSigner();\n invariant(signer, \"This action requires a connected wallet. Please pass a valid signer to the SDK.\");\n return signer;\n }\n createErc20(currencyAddress) {\n return new ContractWrapper(this.connection.getSignerOrProvider(), currencyAddress, ERC20Abi, this.options);\n }\n}\n\n/**\n * The main entry point for the thirdweb SDK\n * @public\n */\nclass ThirdwebSDK extends RPCConnectionHandler {\n /**\n * Get an instance of the thirdweb SDK based on an AbstractWallet\n *\n * @example\n * ```javascript\n * import { ThirdwebSDK } from \"@thirdweb-dev/sdk\"\n *\n * const wallet = new AbstractWalletImplementation();\n * const sdk = await ThirdwebSDK.fromWallet(wallet, \"mainnet\");\n * ```\n *\n * @param wallet - the implementation of the AbstractWallet class to use for signing\n * @param network - the network (chain) to connect to (e.g. \"mainnet\", \"rinkeby\", \"polygon\", \"mumbai\"...) or a fully formed RPC url\n * @param options - the SDK options to use\n * @param storage - optional storage implementation to use\n * @returns an instance of the SDK\n *\n * @beta\n */\n static async fromWallet(wallet, network) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let storage = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new ThirdwebStorage();\n const signerOrProvider = getProviderForNetwork(network);\n const provider = Signer.isSigner(signerOrProvider) ? signerOrProvider.provider : typeof signerOrProvider === \"string\" ? getReadOnlyProvider(signerOrProvider) : signerOrProvider;\n let signer = await wallet.getSigner();\n if (!!provider) {\n signer = signer.connect(provider);\n }\n return ThirdwebSDK.fromSigner(signer, network, options, storage);\n }\n\n /**\n * Get an instance of the thirdweb SDK based on an existing ethers signer\n *\n * @example\n * ```javascript\n * // get a signer from somewhere (createRandom is being used purely for example purposes)\n * const signer = ethers.Wallet.createRandom();\n *\n * // get an instance of the SDK with the signer already setup\n * const sdk = ThirdwebSDK.fromSigner(signer, \"mainnet\");\n * ```\n *\n * @param signer - a ethers Signer to be used for transactions\n * @param network - the network (chain) to connect to (e.g. \"mainnet\", \"rinkeby\", \"polygon\", \"mumbai\"...) or a fully formed RPC url\n * @param options - the SDK options to use\n * @param storage - optional storage implementation to use\n * @returns an instance of the SDK\n *\n * @beta\n */\n static fromSigner(signer, network) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let storage = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new ThirdwebStorage();\n const sdk = new ThirdwebSDK(network || signer, options, storage);\n sdk.updateSignerOrProvider(signer);\n return sdk;\n }\n\n /**\n * Get an instance of the thirdweb SDK based on a private key.\n *\n * @remarks\n * This should only be used for backend services or scripts, with the private key stored in a secure way.\n * **NEVER** expose your private key to the public in any way.\n *\n * @example\n * ```javascript\n * const sdk = ThirdwebSDK.fromPrivateKey(\"SecretPrivateKey\", \"mainnet\");\n * ```\n *\n * @param privateKey - the private key - **DO NOT EXPOSE THIS TO THE PUBLIC**\n * @param network - the network (chain) to connect to (e.g. \"mainnet\", \"rinkeby\", \"polygon\", \"mumbai\"...) or a fully formed RPC url\n * @param options - the SDK options to use\n * @param storage - optional storage implementation to use\n * @returns an instance of the SDK\n *\n * @beta\n */\n static fromPrivateKey(privateKey, network) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let storage = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new ThirdwebStorage();\n const signerOrProvider = getProviderForNetwork(network);\n const provider = Signer.isSigner(signerOrProvider) ? signerOrProvider.provider : typeof signerOrProvider === \"string\" ? getReadOnlyProvider(signerOrProvider) : signerOrProvider;\n const signer = new ethers.Wallet(privateKey, provider);\n return ThirdwebSDK.fromSigner(signer, network, options, storage);\n }\n\n /**\n * @internal\n * the cache of contracts that we have already seen\n */\n\n constructor(network) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let storage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new ThirdwebStorage();\n const signerOrProvider = getProviderForNetwork(network);\n super(signerOrProvider, options);\n _defineProperty(this, \"contractCache\", new Map());\n _defineProperty(this, \"_publisher\", void 0);\n _defineProperty(this, \"storageHandler\", void 0);\n _defineProperty(this, \"deployer\", void 0);\n _defineProperty(this, \"multiChainRegistry\", void 0);\n _defineProperty(this, \"wallet\", void 0);\n _defineProperty(this, \"storage\", void 0);\n this.storageHandler = storage;\n this.storage = storage;\n this.wallet = new UserWallet(signerOrProvider, options);\n this.deployer = new ContractDeployer(signerOrProvider, options, storage);\n this.multiChainRegistry = new MultichainRegistry(signerOrProvider, this.storageHandler, this.options);\n this._publisher = new ContractPublisher(signerOrProvider, this.options, this.storageHandler);\n }\n get auth() {\n throw new Error(`The sdk.auth namespace has been moved to the @thirdweb-dev/auth package and is no longer available after @thirdweb-dev/sdk >= 3.7.0. \n Please visit https://portal.thirdweb.com/auth for instructions on how to switch to using the new auth package (@thirdweb-dev/auth@3.0.0).\n \n If you still want to use the old @thirdweb-dev/auth@2.0.0 package, you can downgrade the SDK to version 3.6.0.`);\n }\n\n /**\n * Get an instance of a NFT Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const dropContract = await sdk.getDropContract(\"0x1234...\");\n * + const dropContract = await sdk.getContract(\"0x1234...\", \"nft-drop\");\n * ```\n */\n async getNFTDrop(contractAddress) {\n return await this.getContract(contractAddress, \"nft-drop\");\n }\n\n /**\n * Get an instance of a Signature Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const signatureDrop = await sdk.getSignatureDrop(\"0x1234...\");\n * + const signatureDrop = await sdk.getContract(\"0x1234...\", \"signature-drop\");\n * ```\n */\n async getSignatureDrop(contractAddress) {\n return await this.getContract(contractAddress, \"signature-drop\");\n }\n\n /**\n * Get an instance of a NFT Collection Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const signatureDrop = await sdk.getNFTCollection(\"0x1234...\");\n * + const signatureDrop = await sdk.getContract(\"0x1234...\", \"nft-collection\");\n * ```\n */\n async getNFTCollection(contractAddress) {\n return await this.getContract(contractAddress, \"nft-collection\");\n }\n\n /**\n * Get an instance of a Edition Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const editionDrop = await sdk.getEditionDrop(\"0x1234...\");\n * + const editionDrop = await sdk.getContract(\"0x1234...\", \"edition-drop\");\n * ```\n */\n async getEditionDrop(contractAddress) {\n return await this.getContract(contractAddress, \"edition-drop\");\n }\n\n /**\n * Get an instance of a Edition contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const edition = await sdk.getEdition(\"0x1234...\");\n * + const edition = await sdk.getContract(\"0x1234...\", \"edition\");\n * ```\n */\n async getEdition(contractAddress) {\n return await this.getContract(contractAddress, \"edition\");\n }\n\n /**\n * Get an instance of a Token Drop contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const tokenDrop = await sdk.getTokenDrop(\"0x1234...\");\n * + const tokenDrop = await sdk.getContract(\"0x1234...\", \"token-drop\");\n * ```\n */\n async getTokenDrop(contractAddress) {\n return await this.getContract(contractAddress, \"token-drop\");\n }\n\n /**\n * Get an instance of a Token contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const token = await sdk.getToken(\"0x1234...\");\n * + const token = await sdk.getContract(\"0x1234...\", \"token\");\n * ```\n */\n async getToken(contractAddress) {\n return await this.getContract(contractAddress, \"token\");\n }\n\n /**\n * Get an instance of a Vote contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const vote = await sdk.getVote(\"0x1234...\");\n * + const vote = await sdk.getContract(\"0x1234...\", \"vote\");\n * ```\n */\n async getVote(contractAddress) {\n return await this.getContract(contractAddress, \"vote\");\n }\n\n /**\n * Get an instance of a Split contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const split = await sdk.getSplit(\"0x1234...\");\n * + const split = await sdk.getContract(\"0x1234...\", \"split\");\n * ```\n */\n async getSplit(contractAddress) {\n return await this.getContract(contractAddress, \"split\");\n }\n\n /**\n * Get an instance of a Marketplace contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const marketplace = await sdk.getMarketplace(\"0x1234...\");\n * + const marketplace = await sdk.getContract(\"0x1234...\", \"marketplace\");\n * ```\n */\n async getMarketplace(contractAddress) {\n return await this.getContract(contractAddress, \"marketplace\");\n }\n\n /**\n * Get an instance of a Marketplace contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const marketplace = await sdk.getMarketplaceV3(\"0x1234...\");\n * + const marketplace = await sdk.getContract(\"0x1234...\", \"marketplace-v3\");\n * ```\n */\n async getMarketplaceV3(contractAddress) {\n return await this.getContract(contractAddress, \"marketplace-v3\");\n }\n\n /**\n * Get an instance of a Pack contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const pack = await sdk.getPack(\"0x1234...\");\n * + const pack = await sdk.getContract(\"0x1234...\", \"pack\");\n * ```\n */\n async getPack(contractAddress) {\n return await this.getContract(contractAddress, \"pack\");\n }\n\n /**\n * Get an instance of a Pack contract\n * @param contractAddress - the address of the deployed contract\n * @deprecated\n * This method is deprecated and will be removed in a future major version. You should use {@link getContract} instead.\n * ```diff\n * - const multiWrap = await sdk.getMultiwrap(\"0x1234...\");\n * + const multiWrap = await sdk.getContract(\"0x1234...\", \"multiwrap\");\n * ```\n */\n async getMultiwrap(contractAddress) {\n return await this.getContract(contractAddress, \"multiwrap\");\n }\n\n /**\n * Get an instance of a Custom ThirdwebContract\n * @param address - the address of the deployed contract\n * @returns the contract\n * @public\n * @example\n * ```javascript\n * const contract = await sdk.getContract(\"{{contract_address}}\");\n * ```\n */\n\n async getContract(address, contractTypeOrABI) {\n // if we have a contract in the cache we will return it\n // we will do this **without** checking any contract type things for simplicity, this may have to change in the future?\n if (this.contractCache.has(address)) {\n // we know this will be there since we check the has above\n return this.contractCache.get(address);\n }\n let newContract;\n\n // if we don't have a contractType or ABI then we will have to resolve it regardless\n // we also handle it being \"custom\" just in case...\n if (!contractTypeOrABI || contractTypeOrABI === \"custom\") {\n const resolvedContractType = await this.resolveContractType(address);\n if (resolvedContractType === \"custom\") {\n // if it's a custom contract we gotta fetch the compiler metadata\n try {\n const publisher = this.getPublisher();\n const metadata = await publisher.fetchCompilerMetadataFromAddress(address);\n newContract = await this.getContractFromAbi(address, metadata.abi);\n } catch (e) {\n throw new Error(`Error fetching ABI for this contract\\n\\n${e}`);\n }\n } else {\n // otherwise if it's a prebuilt contract we can just use the contract type\n const contractAbi = await PREBUILT_CONTRACTS_MAP[resolvedContractType].getAbi(address, this.getProvider(), this.storage);\n newContract = await this.getContractFromAbi(address, contractAbi);\n }\n }\n // if it's a builtin contract type we can just use the contract type to initialize the contract instance\n else if (typeof contractTypeOrABI === \"string\" && contractTypeOrABI in PREBUILT_CONTRACTS_MAP) {\n newContract = await PREBUILT_CONTRACTS_MAP[contractTypeOrABI].initialize(this.getSignerOrProvider(), address, this.storage, this.options);\n }\n // otherwise it has to be an ABI\n else {\n newContract = await this.getContractFromAbi(address, contractTypeOrABI);\n }\n\n // set whatever we have on the cache\n this.contractCache.set(address, newContract);\n // return it\n return newContract;\n }\n\n /**\n * @internal\n * @deprecated use {@link getContract} directly instead\n */\n async getBuiltInContract(address, contractType) {\n return await this.getContract(address, contractType);\n }\n\n /**\n * @param contractAddress - the address of the contract to attempt to resolve the contract type for\n * @returns the {@link ContractType} for the given contract address\n *\n */\n async resolveContractType(contractAddress) {\n try {\n const contract = new Contract(contractAddress, IThirdwebContractABI,\n // !provider only! - signer can break things here!\n this.getProvider());\n const remoteContractType = ethers.utils.toUtf8String(await contract.contractType())\n // eslint-disable-next-line no-control-regex\n .replace(/\\x00/g, \"\");\n return getContractTypeForRemoteName(remoteContractType);\n } catch (err) {\n return \"custom\";\n }\n }\n\n /**\n * Return all the contracts deployed by the specified address\n * @param walletAddress - the deployed address\n * @example\n * ```javascript\n * const contracts = sdk.getContractList(\"{{wallet_address}}\");\n * ```\n */\n async getContractList(walletAddress) {\n // TODO - this only reads from the current registry chain, not the multichain registry\n const addresses = (await (await this.deployer.getRegistry())?.getContractAddresses(walletAddress)) || [];\n const addressesWithContractTypes = await Promise.all(addresses.map(async address => {\n let contractType = \"custom\";\n try {\n contractType = await this.resolveContractType(address);\n } catch (e) {\n // this going to happen frequently and be OK, we'll just catch it and ignore it\n }\n let metadata;\n if (contractType === \"custom\") {\n try {\n metadata = (await this.getContract(address)).metadata;\n } catch (e) {\n console.warn(`Couldn't get contract metadata for custom contract: ${address} - ${e}`);\n }\n } else {\n metadata = (await this.getContract(address, contractType)).metadata;\n }\n return {\n address,\n contractType,\n metadata\n };\n }));\n return addressesWithContractTypes.filter(e => e.metadata).map(_ref => {\n let {\n address,\n contractType,\n metadata\n } = _ref;\n invariant(metadata, \"All ThirdwebContracts require metadata\");\n return {\n address,\n contractType,\n metadata: () => metadata.get()\n };\n });\n }\n\n /**\n * Update the active signer or provider for all contracts\n * @param network - the new signer or provider\n */\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n this.updateContractSignerOrProvider();\n }\n updateContractSignerOrProvider() {\n this.wallet.connect(this.getSignerOrProvider());\n this.deployer.updateSignerOrProvider(this.getSignerOrProvider());\n this._publisher.updateSignerOrProvider(this.getSignerOrProvider());\n this.multiChainRegistry.updateSigner(this.getSignerOrProvider());\n for (const [, contract] of this.contractCache) {\n contract.onNetworkUpdated(this.getSignerOrProvider());\n }\n }\n\n /**\n * Get an instance of a Custom contract from a json ABI\n * @param address - the address of the deployed contract\n * @param abi - the JSON abi\n * @returns the contract\n * @beta\n * @example\n * ```javascript\n * // Import your ABI from a JSON file\n * import myABI from \"./path/to/myABI.json\";\n *\n * const contract = sdk.getContractFromAbi(\n * \"{{contract_address}}\",\n * // Pass in the \"abi\" field from the JSON file\n * myABI.abi\n * );\n * ```\n */\n async getContractFromAbi(address, abi) {\n if (this.contractCache.has(address)) {\n return this.contractCache.get(address);\n }\n const [, provider] = getSignerAndProvider(this.getSignerOrProvider(), this.options);\n const parsedABI = typeof abi === \"string\" ? JSON.parse(abi) : abi;\n // TODO we still might want to lazy-fy this\n const contract = new SmartContract(this.getSignerOrProvider(), address, await getCompositePluginABI(address, AbiSchema.parse(parsedABI), provider, this.options, this.storage), this.storageHandler, this.options, (await provider.getNetwork()).chainId);\n this.contractCache.set(address, contract);\n return contract;\n }\n\n /**\n * Get the native balance of a given address (wallet or contract)\n * @example\n * ```javascript\n * const balance = await sdk.getBalance(\"0x...\");\n * console.log(balance.displayValue);\n * ```\n * @param address - the address to check the balance for\n */\n async getBalance(address) {\n return fetchCurrencyValue(this.getProvider(), NATIVE_TOKEN_ADDRESS, await this.getProvider().getBalance(address));\n }\n\n /**\n * @internal\n */\n getPublisher() {\n return this._publisher;\n }\n}\n\n/**\n * @internal\n */\nclass ContractFactory extends ContractWrapper {\n // Map from contract type to version to deploy specific versions by default\n\n constructor(factoryAddr, network, storage, options) {\n super(network, factoryAddr, TWFactoryAbi, options);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"DEFAULT_VERSION_MAP\", {\n [NFTDropInitializer.contractType]: 3,\n [NFTCollectionInitializer.contractType]: 1,\n [SignatureDropInitializer.contractType]: 4,\n [MultiwrapInitializer.contractType]: 1,\n [EditionDropInitializer.contractType]: 2,\n [EditionInitializer.contractType]: 1,\n [TokenDropInitializer.contractType]: 2,\n [TokenInitializer.contractType]: 1,\n [VoteInitializer.contractType]: 1,\n [SplitInitializer.contractType]: 1,\n [MarketplaceInitializer.contractType]: 2,\n [MarketplaceV3Initializer.contractType]: 1,\n [PackInitializer.contractType]: 2\n });\n this.storage = storage;\n }\n async deploy(contractType, contractMetadata, eventEmitter, version) {\n const contract = PREBUILT_CONTRACTS_MAP[contractType];\n const metadata = contract.schema.deploy.parse(contractMetadata);\n\n // TODO: is there any special pre-processing we need to do before uploading?\n const contractURI = await this.storage.upload(metadata);\n const implementationAddress = await this.getImplementation(contract, version);\n if (!implementationAddress || implementationAddress === constants.AddressZero) {\n throw new Error(`No implementation found for ${contractType}`);\n }\n const ABI = await contract.getAbi(implementationAddress, this.getProvider(), this.storage);\n const encodedFunc = Contract.getInterface(ABI).encodeFunctionData(\"initialize\", await this.getDeployArguments(contractType, metadata, contractURI));\n const blockNumber = await this.getProvider().getBlockNumber();\n const salt = ethers.utils.formatBytes32String(blockNumber.toString());\n const receipt = await this.sendTransaction(\"deployProxyByImplementation\", [implementationAddress, encodedFunc, salt]);\n const events = this.parseLogs(\"ProxyDeployed\", receipt.logs);\n if (events.length < 1) {\n throw new Error(\"No ProxyDeployed event found\");\n }\n const contractAddress = events[0].args.proxy;\n eventEmitter.emit(\"contractDeployed\", {\n status: \"completed\",\n contractAddress,\n transactionHash: receipt.transactionHash\n });\n return contractAddress;\n }\n\n // TODO once IContractFactory is implemented, this can be probably be moved to its own class\n async deployProxyByImplementation(implementationAddress, implementationAbi, initializerFunction, initializerArgs, eventEmitter) {\n const encodedFunc = Contract.getInterface(implementationAbi).encodeFunctionData(initializerFunction, initializerArgs);\n const blockNumber = await this.getProvider().getBlockNumber();\n const receipt = await this.sendTransaction(\"deployProxyByImplementation\", [implementationAddress, encodedFunc, ethers.utils.formatBytes32String(blockNumber.toString())]);\n const events = this.parseLogs(\"ProxyDeployed\", receipt.logs);\n if (events.length < 1) {\n throw new Error(\"No ProxyDeployed event found\");\n }\n const contractAddress = events[0].args.proxy;\n eventEmitter.emit(\"contractDeployed\", {\n status: \"completed\",\n contractAddress,\n transactionHash: receipt.transactionHash\n });\n return contractAddress;\n }\n\n /**\n *\n * @param contractType\n * @param metadata\n * @param contractURI\n * @returns\n * @internal\n */\n async getDeployArguments(contractType, metadata, contractURI) {\n let trustedForwarders = contractType === PackInitializer.contractType ? [] : await this.getDefaultTrustedForwarders();\n // override default forwarders if custom ones are passed in\n if (metadata.trusted_forwarders && metadata.trusted_forwarders.length > 0) {\n trustedForwarders = metadata.trusted_forwarders;\n }\n switch (contractType) {\n case NFTDropInitializer.contractType:\n case NFTCollectionInitializer.contractType:\n const erc721metadata = NFTDropInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), erc721metadata.name, erc721metadata.symbol, contractURI, trustedForwarders, erc721metadata.primary_sale_recipient, erc721metadata.fee_recipient, erc721metadata.seller_fee_basis_points, erc721metadata.platform_fee_basis_points, erc721metadata.platform_fee_recipient];\n case SignatureDropInitializer.contractType:\n const signatureDropmetadata = SignatureDropInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), signatureDropmetadata.name, signatureDropmetadata.symbol, contractURI, trustedForwarders, signatureDropmetadata.primary_sale_recipient, signatureDropmetadata.fee_recipient, signatureDropmetadata.seller_fee_basis_points, signatureDropmetadata.platform_fee_basis_points, signatureDropmetadata.platform_fee_recipient];\n case MultiwrapInitializer.contractType:\n const multiwrapMetadata = MultiwrapInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), multiwrapMetadata.name, multiwrapMetadata.symbol, contractURI, trustedForwarders, multiwrapMetadata.fee_recipient, multiwrapMetadata.seller_fee_basis_points];\n case EditionDropInitializer.contractType:\n case EditionInitializer.contractType:\n const erc1155metadata = EditionDropInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), erc1155metadata.name, erc1155metadata.symbol, contractURI, trustedForwarders, erc1155metadata.primary_sale_recipient, erc1155metadata.fee_recipient, erc1155metadata.seller_fee_basis_points, erc1155metadata.platform_fee_basis_points, erc1155metadata.platform_fee_recipient];\n case TokenDropInitializer.contractType:\n case TokenInitializer.contractType:\n const erc20metadata = TokenInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), erc20metadata.name, erc20metadata.symbol, contractURI, trustedForwarders, erc20metadata.primary_sale_recipient, erc20metadata.platform_fee_recipient, erc20metadata.platform_fee_basis_points];\n case VoteInitializer.contractType:\n const voteMetadata = VoteInitializer.schema.deploy.parse(metadata);\n return [voteMetadata.name, contractURI, trustedForwarders, voteMetadata.voting_token_address, voteMetadata.voting_delay_in_blocks, voteMetadata.voting_period_in_blocks, BigNumber.from(voteMetadata.proposal_token_threshold), voteMetadata.voting_quorum_fraction];\n case SplitInitializer.contractType:\n const splitsMetadata = SplitInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), contractURI, trustedForwarders, splitsMetadata.recipients.map(s => s.address), splitsMetadata.recipients.map(s => BigNumber.from(s.sharesBps))];\n case MarketplaceInitializer.contractType:\n const marketplaceMetadata = MarketplaceInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), contractURI, trustedForwarders, marketplaceMetadata.platform_fee_recipient, marketplaceMetadata.platform_fee_basis_points];\n case MarketplaceV3Initializer.contractType:\n const marketplaceV3Metadata = MarketplaceV3Initializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), contractURI, trustedForwarders, marketplaceV3Metadata.platform_fee_recipient, marketplaceV3Metadata.platform_fee_basis_points];\n case PackInitializer.contractType:\n const packsMetadata = PackInitializer.schema.deploy.parse(metadata);\n return [await this.getSignerAddress(), packsMetadata.name, packsMetadata.symbol, contractURI, trustedForwarders, packsMetadata.fee_recipient, packsMetadata.seller_fee_basis_points];\n default:\n return [];\n }\n }\n async getDefaultTrustedForwarders() {\n const chainId = await this.getChainID();\n return getDefaultTrustedForwarders(chainId);\n }\n async getImplementation(contract, version) {\n const encodedType = ethers.utils.formatBytes32String(contract.name);\n const chainId = await this.getChainID();\n const approvedImplementation = getApprovedImplementation(chainId, contract.contractType);\n // return approved implementation if it exists and we're not overriding the version\n if (approvedImplementation && approvedImplementation.length > 0 && version === undefined) {\n return approvedImplementation;\n }\n return this.readContract.getImplementation(encodedType, version !== undefined ? version : this.DEFAULT_VERSION_MAP[contract.contractType]);\n }\n async getLatestVersion(contractType) {\n const name = getContractName(contractType);\n if (!name) {\n throw new Error(`Invalid contract type ${contractType}`);\n }\n const encodedType = ethers.utils.formatBytes32String(name);\n return this.readContract.currentVersion(encodedType);\n }\n}\n\n/**\n * @internal\n */\nclass ContractRegistry extends ContractWrapper {\n constructor(registryAddress, network, options) {\n super(network, registryAddress, TWRegistryABI$1, options);\n }\n async getContractAddresses(walletAddress) {\n // TODO @fixme the filter here is necessary because for some reason getAll returns a 0x0 address for the first entry\n return (await this.readContract.getAll(walletAddress)).filter(adr => utils.isAddress(adr) && adr.toLowerCase() !== constants.AddressZero);\n }\n async addContract(contractAddress) {\n return await this.addContracts([contractAddress]);\n }\n async addContracts(contractAddresses) {\n const deployerAddress = await this.getSignerAddress();\n const encoded = [];\n contractAddresses.forEach(address => {\n encoded.push(this.readContract.interface.encodeFunctionData(\"add\", [deployerAddress, address]));\n });\n return {\n receipt: await this.multiCall(encoded)\n };\n }\n async removeContract(contractAddress) {\n return await this.removeContracts([contractAddress]);\n }\n async removeContracts(contractAddresses) {\n const deployerAddress = await this.getSignerAddress();\n const encoded = [];\n contractAddresses.forEach(address => {\n encoded.push(this.readContract.interface.encodeFunctionData(\"remove\", [deployerAddress, address]));\n });\n return {\n receipt: await this.multiCall(encoded)\n };\n }\n}\n\n/**\n * Handles deploying new contracts\n * @public\n */\nclass ContractDeployer extends RPCConnectionHandler {\n /**\n * @internal\n * should never be accessed directly, use {@link ContractDeployer.getFactory} instead\n */\n\n /**\n * @internal\n * should never be accessed directly, use {@link ContractDeployer.getRegistry} instead\n */\n\n constructor(network, options, storage) {\n super(network, options);\n _defineProperty(this, \"_factory\", void 0);\n _defineProperty(this, \"_registry\", void 0);\n _defineProperty(this, \"storage\", void 0);\n _defineProperty(this, \"events\", void 0);\n _defineProperty(this, \"transactionListener\", event => {\n if (event.status === \"submitted\") {\n this.events.emit(\"contractDeployed\", {\n status: \"submitted\",\n transactionHash: event.transactionHash\n });\n }\n });\n this.storage = storage;\n this.events = new EventEmitter$1();\n // Initialize factory and registry (we don't need to make these calls async)\n this.getFactory();\n this.getRegistry();\n }\n\n /**\n * Deploys an NFT Collection contract\n *\n * @remarks Deploys an NFT Collection contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployNFTCollection({\n * name: \"My Collection\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployNFTCollection(metadata) {\n return await this.deployBuiltInContract(NFTCollectionInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new NFTDrop contract\n *\n * @remarks Deploys an NFT Drop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployNFTDrop({\n * name: \"My Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployNFTDrop(metadata) {\n return await this.deployBuiltInContract(NFTDropInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new SignatureDrop contract\n *\n * @remarks Deploys a SignatureDrop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deploySignatureDrop({\n * name: \"My Signature Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deploySignatureDrop(metadata) {\n return await this.deployBuiltInContract(SignatureDropInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Multiwrap contract\n *\n * @remarks Deploys a Multiwrap contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployMultiwrap({\n * name: \"My Multiwrap\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n * @beta\n */\n async deployMultiwrap(metadata) {\n return await this.deployBuiltInContract(MultiwrapInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Edition contract\n *\n * @remarks Deploys an Edition contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployEdition({\n * name: \"My Edition\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployEdition(metadata) {\n return await this.deployBuiltInContract(EditionInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new EditionDrop contract\n *\n * @remarks Deploys an Edition Drop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployEditionDrop({\n * name: \"My Edition Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployEditionDrop(metadata) {\n return await this.deployBuiltInContract(EditionDropInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Token contract\n *\n * @remarks Deploys a Token contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployToken({\n * name: \"My Token\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployToken(metadata) {\n return await this.deployBuiltInContract(TokenInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Token Drop contract\n *\n * @remarks Deploys a Token Drop contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployTokenDrop({\n * name: \"My Token Drop\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployTokenDrop(metadata) {\n return await this.deployBuiltInContract(TokenDropInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Marketplace contract\n *\n * @remarks Deploys a Marketplace contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployMarketplace({\n * name: \"My Marketplace\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployMarketplace(metadata) {\n return await this.deployBuiltInContract(MarketplaceInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Marketplace-V3 contract\n *\n * @remarks Deploys a Marketplace-V3 contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployMarketplaceV3({\n * name: \"My Marketplace\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployMarketplaceV3(metadata) {\n return await this.deployBuiltInContract(MarketplaceV3Initializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Pack contract\n *\n * @remarks Deploys a Pack contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployPack({\n * name: \"My Pack\",\n * primary_sale_recipient: \"your-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployPack(metadata) {\n return await this.deployBuiltInContract(PackInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Split contract\n *\n * @remarks Deploys a Split contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deploySplit({\n * name: \"My Split\",\n * primary_sale_recipient: \"your-address\",\n * recipients: [\n * {\n * address: \"your-address\",\n * sharesBps: 80 * 100, // 80%\n * },\n * {\n * address: \"another-address\",\n * sharesBps: 20 * 100, // 20%\n * },\n * ],\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deploySplit(metadata) {\n return await this.deployBuiltInContract(SplitInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new Vote contract\n *\n * @remarks Deploys an Vote contract and returns the address of the deployed contract\n *\n * @example\n * ```javascript\n * const contractAddress = await sdk.deployer.deployVote({\n * name: \"My Vote\",\n * primary_sale_recipient: \"your-address\",\n * voting_token_address: \"your-token-contract-address\",\n * });\n * ```\n * @param metadata - the contract metadata\n * @returns the address of the deployed contract\n */\n async deployVote(metadata) {\n return await this.deployBuiltInContract(VoteInitializer.contractType, metadata);\n }\n\n /**\n * Deploys a new contract\n *\n * @internal\n * @param contractType - the type of contract to deploy\n * @param contractMetadata - the metadata to deploy the contract with\n * @param version\n * @returns a promise of the address of the newly deployed contract\n */\n async deployBuiltInContract(contractType, contractMetadata) {\n let version = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"latest\";\n const activeChainId = (await this.getProvider().getNetwork()).chainId;\n const parsedMetadata = PREBUILT_CONTRACTS_MAP[contractType].schema.deploy.parse(contractMetadata);\n const factory = await this.getFactory();\n if (activeChainId === ChainId.Hardhat || activeChainId === ChainId.Localhost) {\n //\n // old behavior for hardhat and localhost chains\n //\n\n // parse version into the first number of the version string (or undefined if unparseable)\n let parsedVersion = undefined;\n try {\n parsedVersion = parseInt(version);\n if (isNaN(parsedVersion)) {\n parsedVersion = undefined;\n }\n } catch (e) {\n parsedVersion = undefined;\n }\n factory.on(EventType.Transaction, this.transactionListener);\n const deployedAddress = await factory.deploy(contractType, parsedMetadata, this.events, parsedVersion);\n factory.off(EventType.Transaction, this.transactionListener);\n return deployedAddress;\n }\n\n //\n // new behavior for all other chains\n //\n\n // resolve contract name from type\n const contractName = getContractName(contractType);\n invariant(contractName, \"contract name not found\");\n // get deploy arugments for the contractType\n // first upload the contractmetadata\n const contractURI = await this.storage.upload(parsedMetadata);\n // the get the deploy arguments\n const constructorParams = await factory.getDeployArguments(contractType, parsedMetadata, contractURI);\n return this.deployReleasedContract(\n // 0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024 === deployer.thirdweb.eth\n \"0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024\", contractName, constructorParams, version);\n }\n\n /**\n * @internal\n * @param contractType\n */\n async getLatestBuiltInContractVersion(contractType) {\n const factory = await this.getFactory();\n return await factory.getLatestVersion(contractType);\n }\n\n /**\n * Deploy any released contract by its name\n * @param releaserAddress the address of the releaser\n * @param contractName the name of the contract to deploy\n * @param constructorParams the constructor params to pass to the contract\n */\n async deployReleasedContract(releaserAddress, contractName, constructorParams) {\n let version = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"latest\";\n const release = await new ThirdwebSDK(\"polygon\").getPublisher().getVersion(releaserAddress, contractName, version);\n if (!release) {\n throw new Error(`No release found for '${contractName}' at version '${version}' by '${releaserAddress}'`);\n }\n return await this.deployContractFromUri(release.metadataUri, constructorParams);\n }\n\n /**\n * Deploy a proxy contract of a given implementation via the given factory\n * @param factoryAddress\n * @param implementationAddress\n * @param implementationAbi\n * @param initializerFunction\n * @param initializerArgs\n */\n async deployViaFactory(factoryAddress, implementationAddress, implementationAbi, initializerFunction, initializerArgs) {\n const signer = this.getSigner();\n invariant(signer, \"signer is required\");\n // TODO only require factory interface here - IProxyFactory\n const proxyFactory = new ContractFactory(factoryAddress, this.getSignerOrProvider(), this.storage, this.options);\n proxyFactory.on(EventType.Transaction, this.transactionListener);\n const deployedAddress = await proxyFactory.deployProxyByImplementation(implementationAddress, implementationAbi, initializerFunction, initializerArgs, this.events);\n proxyFactory.off(EventType.Transaction, this.transactionListener);\n return deployedAddress;\n }\n\n /**\n * Deploy a proxy contract of a given implementation directly\n * @param implementationAddress\n * @param implementationAbi\n * @param initializerFunction\n * @param initializerArgs\n */\n async deployProxy(implementationAddress, implementationAbi, initializerFunction, initializerArgs) {\n const encodedInitializer = Contract.getInterface(implementationAbi).encodeFunctionData(initializerFunction, initializerArgs);\n const {\n TWProxy__factory\n } = await import('@thirdweb-dev/contracts-js/factories/TWProxy__factory');\n return this.deployContractWithAbi(TWProxy__factory.abi, TWProxy__factory.bytecode, [implementationAddress, encodedInitializer]);\n }\n\n /**\n * @internal\n */\n async getRegistry() {\n // if we already have a registry just return it back\n if (this._registry) {\n return this._registry;\n }\n\n // otherwise get the registry address for the active chain and get a new one\n\n // have to do it like this otherwise we run it over and over and over\n // \"this._registry\" has to be assigned to the promise upfront.\n return this._registry = this.getProvider().getNetwork().then(async _ref => {\n let {\n chainId\n } = _ref;\n const registryAddress = getContractAddressByChainId(chainId, \"twRegistry\");\n return new ContractRegistry(registryAddress, this.getSignerOrProvider(), this.options);\n });\n }\n async getFactory() {\n // if we already have a factory just return it back\n if (this._factory) {\n return this._factory;\n }\n\n // otherwise get the factory address for the active chain and get a new one\n\n // have to do it like this otherwise we run it over and over and over\n // \"this._factory\" has to be assigned to the promise upfront.\n return this._factory = this.getProvider().getNetwork().then(async _ref2 => {\n let {\n chainId\n } = _ref2;\n const factoryAddress = getContractAddressByChainId(chainId, \"twFactory\");\n const factory = new ContractFactory(factoryAddress, this.getSignerOrProvider(), this.storage, this.options);\n return factory;\n });\n }\n updateSignerOrProvider(network) {\n super.updateSignerOrProvider(network);\n this.updateContractSignerOrProvider();\n }\n updateContractSignerOrProvider() {\n // has to be promises now\n this._factory?.then(factory => {\n factory.updateSignerOrProvider(this.getSignerOrProvider());\n }).catch(() => {\n // ignore\n });\n // has to be promises now\n this._registry?.then(registry => {\n registry.updateSignerOrProvider(this.getSignerOrProvider());\n }).catch(() => {\n // ignore\n });\n }\n\n /**\n * @internal\n * @param publishMetadataUri\n * @param constructorParamValues\n * @param options\n */\n async deployContractFromUri(publishMetadataUri, constructorParamValues, options) {\n const signer = this.getSigner();\n invariant(signer, \"A signer is required\");\n const compilerMetadata = await fetchPreDeployMetadata(publishMetadataUri, this.storage);\n let isDeployableViaFactory;\n let isDeployableViaProxy;\n let factoryDeploymentData;\n try {\n const extendedMetadata = await fetchExtendedReleaseMetadata(publishMetadataUri, this.storage);\n isDeployableViaFactory = extendedMetadata.isDeployableViaFactory;\n isDeployableViaProxy = extendedMetadata.isDeployableViaProxy;\n factoryDeploymentData = FactoryDeploymentSchema.parse(extendedMetadata.factoryDeploymentData);\n } catch (e) {\n // not a factory deployment, ignore\n }\n const forceDirectDeploy = options?.forceDirectDeploy || false;\n if (factoryDeploymentData && (isDeployableViaProxy || isDeployableViaFactory) && !forceDirectDeploy) {\n const chainId = (await this.getProvider().getNetwork()).chainId;\n invariant(factoryDeploymentData.implementationAddresses, \"implementationAddresses is required\");\n const implementationAddress = factoryDeploymentData.implementationAddresses[chainId];\n invariant(implementationAddress, `implementationAddress not found for chainId '${chainId}'`);\n invariant(factoryDeploymentData.implementationInitializerFunction, `implementationInitializerFunction not set'`);\n const initializerParamTypes = extractFunctionParamsFromAbi(compilerMetadata.abi, factoryDeploymentData.implementationInitializerFunction).map(p => p.type);\n const paramValues = this.convertParamValues(initializerParamTypes, constructorParamValues);\n if (isDeployableViaFactory) {\n // deploy via a factory (prioritise factory)\n invariant(factoryDeploymentData.factoryAddresses, \"isDeployableViaFactory is true so factoryAddresses is required\");\n const factoryAddress = factoryDeploymentData.factoryAddresses[chainId];\n invariant(factoryAddress, `isDeployableViaFactory is true and factoryAddress not found for chainId '${chainId}'`);\n return await this.deployViaFactory(factoryAddress, implementationAddress, compilerMetadata.abi, factoryDeploymentData.implementationInitializerFunction, paramValues);\n } else if (isDeployableViaProxy) {\n // deploy a proxy directly\n return await this.deployProxy(implementationAddress, compilerMetadata.abi, factoryDeploymentData.implementationInitializerFunction, paramValues);\n }\n }\n const bytecode = compilerMetadata.bytecode.startsWith(\"0x\") ? compilerMetadata.bytecode : `0x${compilerMetadata.bytecode}`;\n if (!ethers.utils.isHexString(bytecode)) {\n throw new Error(`Contract bytecode is invalid.\\n\\n${bytecode}`);\n }\n const constructorParamTypes = extractConstructorParamsFromAbi(compilerMetadata.abi).map(p => p.type);\n const paramValues = this.convertParamValues(constructorParamTypes, constructorParamValues);\n return this.deployContractWithAbi(compilerMetadata.abi, bytecode, paramValues);\n }\n convertParamValues(constructorParamTypes, constructorParamValues) {\n // check that both arrays are same length\n if (constructorParamTypes.length !== constructorParamValues.length) {\n throw Error(\"Passed the wrong number of constructor arguments\");\n }\n return constructorParamTypes.map((p, index) => {\n if (p === \"tuple\" || p.endsWith(\"[]\")) {\n if (typeof constructorParamValues[index] === \"string\") {\n return JSON.parse(constructorParamValues[index]);\n } else {\n return constructorParamValues[index];\n }\n }\n if (p === \"bytes32\") {\n invariant(ethers.utils.isHexString(constructorParamValues[index]), `Could not parse bytes32 value. Expected valid hex string but got \"${constructorParamValues[index]}\".`);\n return ethers.utils.hexZeroPad(constructorParamValues[index], 32);\n }\n if (p.startsWith(\"bytes\")) {\n invariant(ethers.utils.isHexString(constructorParamValues[index]), `Could not parse bytes value. Expected valid hex string but got \"${constructorParamValues[index]}\".`);\n return constructorParamValues[index];\n }\n if (p.startsWith(\"uint\") || p.startsWith(\"int\")) {\n return BigNumber.from(constructorParamValues[index].toString());\n }\n return constructorParamValues[index];\n });\n }\n\n /**\n * @internal\n * @param abi\n * @param bytecode\n * @param constructorParams\n */\n async deployContractWithAbi(abi, bytecode, constructorParams) {\n const signer = this.getSigner();\n invariant(signer, \"Signer is required to deploy contracts\");\n const deployer = await new ethers.ContractFactory(abi, bytecode).connect(signer).deploy(...constructorParams);\n this.events.emit(\"contractDeployed\", {\n status: \"submitted\",\n transactionHash: deployer.deployTransaction.hash\n });\n const deployedContract = await deployer.deployed();\n this.events.emit(\"contractDeployed\", {\n status: \"completed\",\n contractAddress: deployedContract.address,\n transactionHash: deployedContract.deployTransaction.hash\n });\n return deployedContract.address;\n }\n\n /**\n * Listen to all deploy transactions from this deployer\n * @param listener the listener to add\n */\n addDeployListener(listener) {\n this.events.on(\"contractDeployed\", listener);\n }\n\n /**\n * Remove a deploy listener\n * @param listener the listener to remove\n */\n removeDeployListener(listener) {\n this.events.off(\"contractDeployed\", listener);\n }\n\n /**\n * Remove all deploy listeners\n */\n removeAllDeployListeners() {\n this.events.removeAllListeners(\"contractDeployed\");\n }\n}\n\n/**\n * Encodes and decodes Contract functions\n * @public\n */\nclass ContractOwner {\n constructor(contractWrapper) {\n _defineProperty(this, \"featureName\", FEATURE_OWNER.name);\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n\n /**\n * Return the current owner of the contract\n * @returns the owner address\n */\n async get() {\n return this.contractWrapper.readContract.owner();\n }\n\n /**\n * Set the new owner of the contract\n * @remarks Can only be called by the current owner.\n *\n * @param address - the address of the new owner\n *\n * @example\n * ```javascript\n * await contract.owner.set(\"0x1234567890123456789012345678901234567890\");\n * ```\n */\n async set(address) {\n return {\n receipt: await this.contractWrapper.sendTransaction(\"setOwner\", [address])\n };\n }\n}\n\n// Internal static cache\nconst metadataCache = {};\n// polygonSDK to fetch metadata from the multichain registry\nconst polygonSDK = new ThirdwebSDK(\"polygon\");\nfunction getCacheKey(address, chainId) {\n return `${address}-${chainId}`;\n}\nfunction putInCache(address, chainId, metadata) {\n metadataCache[getCacheKey(address, chainId)] = metadata;\n}\nfunction getFromCache(address, chainId) {\n return metadataCache[getCacheKey(address, chainId)];\n}\n\n/**\n * @internal\n * @param address\n * @param provider\n * @param storage\n */\nasync function fetchContractMetadataFromAddress(address, provider, storage) {\n const chainId = (await provider.getNetwork()).chainId;\n const cached = getFromCache(address, chainId);\n if (cached) {\n return cached;\n }\n let metadata;\n try {\n const compilerMetadataUri = await resolveContractUriFromAddress(address, provider);\n if (!compilerMetadataUri) {\n throw new Error(`Could not resolve metadata for contract at ${address}`);\n }\n metadata = await fetchContractMetadata(compilerMetadataUri, storage);\n } catch (e) {\n try {\n // try from multichain registry\n const importedUri = await polygonSDK.multiChainRegistry.getContractMetadataURI(chainId, address);\n metadata = await fetchContractMetadata(importedUri, storage);\n } catch (err) {\n throw new Error(`Could not resolve metadata for contract at ${address}`);\n }\n }\n if (!metadata) {\n throw new Error(`Could not resolve metadata for contract at ${address}`);\n }\n putInCache(address, chainId, metadata);\n return metadata;\n}\n\n/**\n * @internal\n * @param address\n * @param provider\n * @param storage\n * @returns\n */\nasync function fetchAbiFromAddress(address, provider, storage) {\n try {\n const metadata = await fetchContractMetadataFromAddress(address, provider, storage);\n if (metadata && metadata.abi) {\n return metadata.abi;\n }\n } catch (e) {\n // ignore and return undefined\n // will fallback to embedded ABIs for prebuilts\n }\n return undefined;\n}\n\n/**\n * @internal\n * @param compilerMetadataUri\n * @param storage\n */\nasync function fetchContractMetadata(compilerMetadataUri, storage) {\n const metadata = await storage.downloadJSON(compilerMetadataUri);\n if (!metadata || !metadata.output) {\n throw new Error(`Could not resolve metadata for contract at ${compilerMetadataUri}`);\n }\n const abi = AbiSchema.parse(metadata.output.abi);\n const compilationTarget = metadata.settings.compilationTarget;\n const targets = Object.keys(compilationTarget);\n const name = compilationTarget[targets[0]];\n const info = ContractInfoSchema.parse({\n title: metadata.output.devdoc.title,\n author: metadata.output.devdoc.author,\n details: metadata.output.devdoc.detail,\n notice: metadata.output.userdoc.notice\n });\n const licenses = [...new Set(Object.entries(metadata.sources).map(_ref => {\n let [, src] = _ref;\n return src.license;\n }))];\n return {\n name,\n abi,\n metadata,\n info,\n licenses\n };\n}\n\n/**\n * @internal\n * @param publishedMetadata\n * @param storage\n */\nasync function fetchSourceFilesFromMetadata(publishedMetadata, storage) {\n return await Promise.all(Object.entries(publishedMetadata.metadata.sources).map(async _ref2 => {\n let [path, info] = _ref2;\n const urls = info.urls;\n const ipfsLink = urls ? urls.find(url => url.includes(\"ipfs\")) : undefined;\n if (ipfsLink) {\n const ipfsHash = ipfsLink.split(\"ipfs/\")[1];\n // 3 sec timeout for sources that haven't been uploaded to ipfs\n const timeout = new Promise((_r, rej) => setTimeout(() => rej(\"timeout\"), 3000));\n const source = await Promise.race([(await storage.download(`ipfs://${ipfsHash}`)).text(), timeout]);\n return {\n filename: path,\n source\n };\n } else {\n return {\n filename: path,\n source: info.content || \"Could not find source for this contract\"\n };\n }\n }));\n}\n\n/**\n * @internal\n */\nconst BYOCContractMetadataSchema = CommonContractSchema.catchall(z.union([BigNumberTransformSchema, z.unknown()]));\n\n/**\n * @internal\n */\n\n/**\n * @internal\n */\nconst CustomContractInput = BYOCContractMetadataSchema.merge(CommonRoyaltySchema.merge(MerkleSchema).merge(CommonSymbolSchema).partial());\n\n/**\n * @internal\n */\nconst CustomContractOutput = CommonContractOutputSchema.merge(CommonRoyaltySchema.merge(MerkleSchema).merge(CommonSymbolSchema).partial());\n\n/**\n * @internal\n */\nconst CustomContractDeploy = CustomContractInput.merge(CommonPlatformFeeSchema.merge(CommonPrimarySaleSchema).merge(CommonTrustedForwarderSchema).partial());\n\n/**\n * @internal\n */\nconst CustomContractSchema = {\n deploy: CustomContractDeploy,\n output: CustomContractOutput,\n input: CustomContractInput\n};\n\n/**\n * @internal\n */\nconst AbiTypeBaseSchema = z.object({\n type: z.string(),\n name: z.string()\n}).catchall(z.any());\n\n/**\n * @internal\n */\nconst AbiTypeSchema = AbiTypeBaseSchema.extend({\n stateMutability: z.string().optional(),\n components: z.array(AbiTypeBaseSchema).optional()\n}).catchall(z.any());\n\n/**\n * @internal\n */\nconst AbiObjectSchema = z.object({\n type: z.string(),\n name: z.string().default(\"\"),\n inputs: z.array(AbiTypeSchema).default([]),\n outputs: z.array(AbiTypeSchema).default([])\n}).catchall(z.any());\n\n/**\n * @internal\n */\nconst AbiSchema = z.array(AbiObjectSchema);\n/**\n * @internal\n */\nconst PreDeployMetadata = z.object({\n name: z.string(),\n metadataUri: z.string(),\n bytecodeUri: z.string(),\n analytics: z.any().optional()\n}).catchall(z.any());\n\n/**\n * @internal\n */\nconst ChainIdToAddressSchema = z.record(z.string(), z.string());\n\n/**\n * @internal\n */\nconst FactoryDeploymentSchema = z.object({\n implementationAddresses: ChainIdToAddressSchema,\n implementationInitializerFunction: z.string().default(\"initialize\"),\n factoryAddresses: ChainIdToAddressSchema.optional()\n});\n\n/**\n * @internal\n */\nconst ExtraPublishMetadataSchemaInput = z.object({\n version: z.string().refine(v => {\n try {\n toSemver(v);\n return true;\n } catch (e) {\n return false;\n }\n }, out => {\n return {\n message: `'${out}' is not a valid semantic version. Should be in the format of major.minor.patch. Ex: 0.4.1`\n };\n }),\n displayName: z.string().optional(),\n description: z.string().optional(),\n readme: z.string().optional(),\n license: z.string().optional(),\n changelog: z.string().optional(),\n tags: z.array(z.string()).optional(),\n audit: FileOrBufferOrStringSchema.nullable().optional(),\n logo: FileOrBufferOrStringSchema.nullable().optional(),\n isDeployableViaFactory: z.boolean().optional(),\n isDeployableViaProxy: z.boolean().optional(),\n factoryDeploymentData: FactoryDeploymentSchema.optional(),\n constructorParams: z.record(z.string(), z.object({\n displayName: z.string().optional(),\n description: z.string().optional(),\n defaultValue: z.string().optional()\n }).catchall(z.any())).optional()\n}).catchall(z.any());\n\n/**\n * @internal\n */\nconst ExtraPublishMetadataSchemaOutput = ExtraPublishMetadataSchemaInput.extend({\n audit: z.string().nullable().optional(),\n logo: z.string().nullable().optional()\n});\n/**\n * @internal\n */\nconst FullPublishMetadataSchemaInput = PreDeployMetadata.merge(ExtraPublishMetadataSchemaInput).extend({\n publisher: AddressSchema.optional()\n});\n/**\n * @internal\n */\nconst FullPublishMetadataSchemaOutput = PreDeployMetadata.merge(ExtraPublishMetadataSchemaOutput).extend({\n publisher: AddressSchema.optional()\n});\n/**\n * @internal\n */\nconst ProfileSchemaInput = z.object({\n name: z.string().optional(),\n bio: z.string().optional(),\n avatar: FileOrBufferOrStringSchema.nullable().optional(),\n website: z.string().optional(),\n twitter: z.string().optional(),\n telegram: z.string().optional(),\n facebook: z.string().optional(),\n github: z.string().optional(),\n medium: z.string().optional(),\n linkedin: z.string().optional(),\n reddit: z.string().optional(),\n discord: z.string().optional()\n});\nconst ProfileSchemaOutput = ProfileSchemaInput.extend({\n avatar: z.string().nullable().optional()\n});\n/**\n * @internal\n */\nconst PublishedContractSchema = z.object({\n id: z.string(),\n timestamp: BigNumberishSchema,\n metadataUri: z.string()\n});\n\n/**\n * @internal\n * Follows https://docs.soliditylang.org/en/v0.8.15/natspec-format.html\n */\nconst ContractInfoSchema = z.object({\n title: z.string().optional(),\n author: z.string().optional(),\n details: z.string().optional(),\n notice: z.string().optional()\n});\n\n/**\n * @internal\n */\nconst CompilerMetadataFetchedSchema = z.object({\n name: z.string(),\n abi: AbiSchema,\n metadata: z.record(z.string(), z.any()),\n info: ContractInfoSchema,\n licenses: z.array(z.string().optional()).default([]).transform(v => {\n return v.filter(license => license !== undefined);\n })\n});\n\n/**\n * @internal\n */\nconst PreDeployMetadataFetchedSchema = PreDeployMetadata.merge(CompilerMetadataFetchedSchema).extend({\n bytecode: z.string()\n});\n\nconst PAPER_API_BASE = `https://paper.xyz/api`;\nconst PAPER_API_VERSION = `2022-08-12`;\n\n/**\n * @internal\n */\nconst PAPER_API_URL = `${PAPER_API_BASE}/${PAPER_API_VERSION}/platform/thirdweb`;\nconst PAPER_CHAIN_ID_MAP = {\n [ChainId.Mainnet]: \"Ethereum\",\n [ChainId.Goerli]: \"Goerli\",\n [ChainId.Polygon]: \"Polygon\",\n [ChainId.Mumbai]: \"Mumbai\",\n [ChainId.Avalanche]: \"Avalanche\"\n};\n\n/**\n * @internal\n */\nfunction parseChainIdToPaperChain(chainId) {\n invariant(chainId in PAPER_CHAIN_ID_MAP, `chainId not supported by paper: ${chainId}`);\n return PAPER_CHAIN_ID_MAP[chainId];\n}\n/**\n *\n * @param contractAddress\n * @param chainId\n * @internal\n * @returns the paper xyz contract id\n * @throws if the contract is not registered on paper xyz\n */\nasync function fetchRegisteredCheckoutId(contractAddress, chainId) {\n const paperChain = parseChainIdToPaperChain(chainId);\n const res = await fetch(`${PAPER_API_URL}/register-contract?contractAddress=${contractAddress}&chain=${paperChain}`);\n const json = await res.json();\n invariant(json.result.id, \"Contract is not registered with paper\");\n return json.result.id;\n}\n\n/**\n * The parameters for creating a paper.xyz checkout link.\n * @public\n */\n\nconst DEFAULT_PARAMS = {\n expiresInMinutes: 15,\n feeBearer: \"BUYER\",\n sendEmailOnSuccess: true,\n redirectAfterPayment: false\n};\n\n/**\n * @internal\n */\nasync function createCheckoutLinkIntent(contractId, params) {\n const res = await fetch(`${PAPER_API_URL}/checkout-link-intent`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n contractId,\n ...DEFAULT_PARAMS,\n ...params,\n metadata: {\n ...params.metadata,\n via_platform: \"thirdweb\"\n },\n // overrides that are hard coded\n hideNativeMint: true,\n hidePaperWallet: !!params.walletAddress,\n hideExternalWallet: true,\n hidePayWithCrypto: true,\n usePaperKey: false\n })\n });\n const json = await res.json();\n invariant(json.checkoutLinkIntentUrl, \"Failed to create checkout link intent\");\n return json.checkoutLinkIntentUrl;\n}\n\n/**\n * @internal\n */\nclass PaperCheckout {\n constructor(contractWrapper) {\n _defineProperty(this, \"contractWrapper\", void 0);\n this.contractWrapper = contractWrapper;\n }\n async getCheckoutId() {\n return fetchRegisteredCheckoutId(this.contractWrapper.readContract.address, await this.contractWrapper.getChainID());\n }\n async isEnabled() {\n try {\n return !!(await this.getCheckoutId());\n } catch (err) {\n return false;\n }\n }\n async createLinkIntent(params) {\n return await createCheckoutLinkIntent(await this.getCheckoutId(), params);\n }\n}\n\nexport { MintRequest20 as $, AbiTypeSchema as A, BYOCContractMetadataSchema as B, CustomContractInput as C, CommonContractOutputSchema as D, ExtraPublishMetadataSchemaInput as E, FactoryDeploymentSchema as F, CommonRoyaltySchema as G, CommonPrimarySaleSchema as H, CommonPlatformFeeSchema as I, CommonTrustedForwarderSchema as J, CommonSymbolSchema as K, CurrencySchema as L, CurrencyValueSchema as M, BaseSignaturePayloadInput as N, OptionalPropertiesInput as O, PreDeployMetadata as P, Signature20PayloadInput as Q, Signature20PayloadOutput as R, SUPPORTED_CHAIN_IDS as S, TokenMintInputSchema as T, Signature721PayloadInput as U, Signature721PayloadOutput as V, Signature1155PayloadInput as W, Signature1155PayloadInputWithTokenId as X, Signature1155PayloadOutput as Y, Signature721WithQuantityInput as Z, Signature721WithQuantityOutput as _, CustomContractOutput as a, normalizePriceValue as a$, MintRequest721 as a0, MintRequest1155 as a1, MintRequest721withQuantity as a2, GenericRequest as a3, MerkleSchema as a4, SnapshotEntryInput as a5, SnapshotInputSchema as a6, SnapshotEntryWithProofSchema as a7, SnapshotSchema as a8, SnapshotInfoSchema as a9, Erc1155 as aA, Erc1155Enumerable as aB, Erc1155Mintable as aC, Erc1155BatchMintable as aD, Erc1155SignatureMintable as aE, Erc1155Burnable as aF, Erc1155LazyMintable as aG, StandardErc1155 as aH, MarketplaceDirect as aI, MarketplaceAuction as aJ, ContractDeployer as aK, GasCostEstimator as aL, ContractEvents as aM, ContractInterceptor as aN, ContractPlatformFee as aO, ContractPublishedMetadata as aP, ContractOwner as aQ, TransactionTask as aR, UserWallet as aS, ThirdwebSDK as aT, ListingType as aU, Status as aV, ProposalState as aW, VoteType as aX, ClaimEligibility as aY, fetchCurrencyValue as aZ, fetchCurrencyMetadata as a_, ContractEncoder as aa, ContractMetadata as ab, ContractRoles as ac, ContractRoyalty as ad, ContractPrimarySale as ae, DelayedReveal as af, DropClaimConditions as ag, DropErc1155ClaimConditions as ah, DropErc1155History as ai, Erc20 as aj, Erc20Mintable as ak, Erc20BatchMintable as al, TokenERC20History as am, Erc20SignatureMintable as an, Erc20Burnable as ao, StandardErc20 as ap, Erc721 as aq, Erc721LazyMintable as ar, Erc721ClaimableWithConditions as as, Erc721WithQuantitySignatureMintable as at, Erc721Supply as au, Erc721Enumerable as av, Erc721Mintable as aw, Erc721BatchMintable as ax, Erc721Burnable as ay, StandardErc721 as az, CustomContractDeploy as b, getDefaultTrustedForwarders as b$, convertToReadableQuantity as b0, fetchSnapshotEntryForAddress as b1, NotFoundError as b2, InvalidAddressError as b3, MissingRoleError as b4, AssetNotFoundError as b5, UploadError as b6, FileNameMissingError as b7, DuplicateFileNameError as b8, NotEnoughTokensError as b9, extractConstructorParamsFromAbi as bA, extractFunctionParamsFromAbi as bB, extractFunctionsFromAbi as bC, extractEventsFromAbi as bD, extractMinimalProxyImplementationAddress as bE, resolveContractUriFromAddress as bF, extractIPFSHashFromBytecode as bG, fetchRawPredeployMetadata as bH, fetchPreDeployMetadata as bI, fetchExtendedReleaseMetadata as bJ, detectFeatures as bK, getAllDetectedFeatures as bL, getAllDetectedFeatureNames as bM, isFeatureEnabled as bN, assertEnabled as bO, detectContractFeature as bP, hasFunction as bQ, toSemver as bR, isIncrementalVersion as bS, isDowngradeVersion as bT, OZ_DEFENDER_FORWARDER_ADDRESS as bU, CONTRACT_ADDRESSES as bV, APPROVED_IMPLEMENTATIONS as bW, getApprovedImplementation as bX, getContractAddressByChainId as bY, getContractPublisherAddress as bZ, getMultichainRegistryAddress as b_, MissingOwnerRoleError as ba, QuantityAboveLimitError as bb, FetchError as bc, DuplicateLeafsError as bd, AuctionAlreadyStartedError as be, FunctionDeprecatedError as bf, ListingNotFoundError as bg, WrongListingTypeError as bh, RestrictedTransferError as bi, AdminRoleMissingError as bj, AuctionHasNotEndedError as bk, ExtensionNotImplementedError as bl, TransactionError as bm, parseRevertReason as bn, includesErrorMessage as bo, createSnapshot as bp, ALL_ROLES as bq, getRoleHash as br, fetchContractMetadataFromAddress as bs, fetchAbiFromAddress as bt, fetchContractMetadata as bu, fetchSourceFilesFromMetadata as bv, matchesPrebuiltAbi as bw, hasMatchingAbi as bx, extractConstructorParams as by, extractFunctions as bz, CustomContractSchema as c, DropErc20ContractSchema as c$, InterfaceId_IERC721 as c0, InterfaceId_IERC1155 as c1, NATIVE_TOKEN_ADDRESS as c2, NATIVE_TOKENS as c3, getNativeTokenByChainId as c4, LINK_TOKEN_ADDRESS as c5, EventType as c6, DEFAULT_IPFS_GATEWAY as c7, CHAIN_NAME_TO_ID as c8, CHAIN_ID_TO_NAME as c9, DropErc1155ContractSchema as cA, TokenErc1155ContractSchema as cB, MarketplaceContractSchema as cC, mapOffer as cD, isNativeToken as cE, AddressSchema as cF, BigNumberishSchema as cG, RawDateSchema as cH, EndDateSchema as cI, FEATURE_DIRECT_LISTINGS as cJ, getAllInBatches as cK, handleTokenApproval as cL, cleanCurrencyAddress as cM, setErc20Allowance as cN, fetchTokenMetadataForContract as cO, isTokenApprovedForTransfer as cP, FEATURE_ENGLISH_AUCTIONS as cQ, FEATURE_OFFERS as cR, MultiwrapContractSchema as cS, uploadOrExtractURI as cT, hasERC20Allowance as cU, TokenErc721ContractSchema as cV, DropErc721ContractSchema as cW, FEATURE_NFT_REVEALABLE as cX, FEATURE_PACK_VRF as cY, PackContractSchema as cZ, SplitsContractSchema as c_, DEFAULT_RPC_URLS as ca, getProviderForNetwork as cb, getReadOnlyProvider as cc, EditionDropInitializer as cd, EditionInitializer as ce, MarketplaceInitializer as cf, MarketplaceV3Initializer as cg, MultiwrapInitializer as ch, NFTCollectionInitializer as ci, NFTDropInitializer as cj, PackInitializer as ck, SignatureDropInitializer as cl, SplitInitializer as cm, TokenDropInitializer as cn, TokenInitializer as co, VoteInitializer as cp, PREBUILT_CONTRACTS_MAP as cq, CONTRACTS_MAP as cr, getContractTypeForRemoteName as cs, getContractName as ct, PAPER_API_URL as cu, parseChainIdToPaperChain as cv, fetchRegisteredCheckoutId as cw, createCheckoutLinkIntent as cx, PaperCheckout as cy, ContractWrapper as cz, AbiObjectSchema as d, TokenErc20ContractSchema as d0, VoteContractSchema as d1, AbiSchema as e, ChainIdToAddressSchema as f, ExtraPublishMetadataSchemaOutput as g, FullPublishMetadataSchemaInput as h, FullPublishMetadataSchemaOutput as i, ProfileSchemaInput as j, ProfileSchemaOutput as k, PublishedContractSchema as l, ContractInfoSchema as m, CompilerMetadataFetchedSchema as n, PreDeployMetadataFetchedSchema as o, ClaimConditionMetadataSchema as p, ClaimConditionInputSchema as q, ClaimConditionInputArray as r, PartialClaimConditionInputSchema as s, ClaimConditionOutputSchema as t, ChainId as u, EditionMetadataOutputSchema as v, EditionMetadataWithOwnerOutputSchema as w, EditionMetadataInputSchema as x, EditionMetadataInputOrUriSchema as y, CommonContractSchema as z };\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","import fetch from 'cross-fetch';\nimport FormData from 'form-data';\nimport { v4 } from 'uuid';\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n/**\n * @internal\n */\nconst DEFAULT_GATEWAY_URLS = {\n // Note: Gateway URLs should have trailing slashes (we clean this on user input)\n \"ipfs://\": [\"https://gateway.ipfscdn.io/ipfs/\", \"https://cloudflare-ipfs.com/ipfs/\", \"https://ipfs.io/ipfs/\"]\n};\n\n/**\n * @internal\n */\nconst TW_IPFS_SERVER_URL = \"https://upload.nftlabs.co\";\n\n/**\n * @internal\n */\nconst PINATA_IPFS_URL = `https://api.pinata.cloud/pinning/pinFileToIPFS`;\n\n/**\n * @internal\n */\nfunction prepareGatewayUrls(gatewayUrls) {\n const allGatewayUrls = {\n ...gatewayUrls,\n ...DEFAULT_GATEWAY_URLS\n };\n for (const key of Object.keys(DEFAULT_GATEWAY_URLS)) {\n if (gatewayUrls && gatewayUrls[key]) {\n // Make sure that all user gateway URLs have trailing slashes\n const cleanedGatewayUrls = gatewayUrls[key].map(url => url.replace(/\\/$/, \"\") + \"/\");\n allGatewayUrls[key] = [...cleanedGatewayUrls, ...DEFAULT_GATEWAY_URLS[key]];\n }\n }\n return allGatewayUrls;\n}\n\n/**\n * @internal\n */\nfunction isBrowser() {\n return typeof window !== \"undefined\";\n}\n\n/**\n * @internal\n */\nfunction isFileInstance(data) {\n return global.File && data instanceof File;\n}\n\n/**\n * @internal\n */\nfunction isBufferInstance(data) {\n return global.Buffer && data instanceof Buffer;\n}\n\n/**\n * @internal\n */\nfunction isBufferOrStringWithName(data) {\n return !!(data && data.name && data.data && typeof data.name === \"string\" && (typeof data.data === \"string\" || isBufferInstance(data.data)));\n}\nfunction isFileOrBuffer(data) {\n return isFileInstance(data) || isBufferInstance(data) || isBufferOrStringWithName(data);\n}\n\n/**\n * @internal\n */\nfunction isFileBufferOrStringEqual(input1, input2) {\n if (isFileInstance(input1) && isFileInstance(input2)) {\n // if both are File types, compare the name, size, and last modified date (best guess that these are the same files)\n if (input1.name === input2.name && input1.lastModified === input2.lastModified && input1.size === input2.size) {\n return true;\n }\n } else if (isBufferInstance(input1) && isBufferInstance(input2)) {\n // buffer gives us an easy way to compare the contents!\n\n return input1.equals(input2);\n } else if (isBufferOrStringWithName(input1) && isBufferOrStringWithName(input2)) {\n // first check the names\n if (input1.name === input2.name) {\n // if the data for both is a string, compare the strings\n if (typeof input1.data === \"string\" && typeof input2.data === \"string\") {\n return input1.data === input2.data;\n } else if (isBufferInstance(input1.data) && isBufferInstance(input2.data)) {\n // otherwise we know it's buffers, so compare the buffers\n return input1.data.equals(input2.data);\n }\n }\n }\n // otherwise if we have not found a match, return false\n return false;\n}\n\n/**\n * @internal\n */\nfunction replaceGatewayUrlWithScheme(uri, gatewayUrls) {\n for (const scheme of Object.keys(gatewayUrls)) {\n for (const url of gatewayUrls[scheme]) {\n if (uri.startsWith(url)) {\n return uri.replace(url, scheme);\n }\n }\n }\n return uri;\n}\n\n/**\n * @internal\n */\nfunction replaceSchemeWithGatewayUrl(uri, gatewayUrls) {\n let index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n const scheme = Object.keys(gatewayUrls).find(s => uri.startsWith(s));\n const schemeGatewayUrls = scheme ? gatewayUrls[scheme] : [];\n if (!scheme && index > 0 || scheme && index >= schemeGatewayUrls.length) {\n return undefined;\n }\n if (!scheme) {\n return uri;\n }\n return uri.replace(scheme, schemeGatewayUrls[index]);\n}\n\n/**\n * @internal\n */\nfunction replaceObjectGatewayUrlsWithSchemes(data, gatewayUrls) {\n if (typeof data === \"string\") {\n return replaceGatewayUrlWithScheme(data, gatewayUrls);\n }\n if (typeof data === \"object\") {\n if (!data) {\n return data;\n }\n if (isFileOrBuffer(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map(entry => replaceObjectGatewayUrlsWithSchemes(entry, gatewayUrls));\n }\n return Object.fromEntries(Object.entries(data).map(_ref => {\n let [key, value] = _ref;\n return [key, replaceObjectGatewayUrlsWithSchemes(value, gatewayUrls)];\n }));\n }\n return data;\n}\n\n/**\n * @internal\n */\nfunction replaceObjectSchemesWithGatewayUrls(data, gatewayUrls) {\n if (typeof data === \"string\") {\n return replaceSchemeWithGatewayUrl(data, gatewayUrls);\n }\n if (typeof data === \"object\") {\n if (!data) {\n return data;\n }\n if (isFileOrBuffer(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map(entry => replaceObjectSchemesWithGatewayUrls(entry, gatewayUrls));\n }\n return Object.fromEntries(Object.entries(data).map(_ref2 => {\n let [key, value] = _ref2;\n return [key, replaceObjectSchemesWithGatewayUrls(value, gatewayUrls)];\n }));\n }\n return data;\n}\n\n/**\n * @internal\n */\nfunction extractObjectFiles(data) {\n let files = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n // If item is a FileOrBuffer add it to our list of files\n if (isFileOrBuffer(data)) {\n files.push(data);\n return files;\n }\n if (typeof data === \"object\") {\n if (!data) {\n return files;\n }\n if (Array.isArray(data)) {\n data.forEach(entry => extractObjectFiles(entry, files));\n } else {\n Object.keys(data).map(key => extractObjectFiles(data[key], files));\n }\n }\n return files;\n}\n\n/**\n * @internal\n */\nfunction replaceObjectFilesWithUris(data, uris) {\n if (isFileOrBuffer(data)) {\n if (uris.length) {\n data = uris.shift();\n return data;\n } else {\n console.warn(\"Not enough URIs to replace all files in object.\");\n }\n }\n if (typeof data === \"object\") {\n if (!data) {\n return data;\n }\n if (Array.isArray(data)) {\n return data.map(entry => replaceObjectFilesWithUris(entry, uris));\n } else {\n return Object.fromEntries(Object.entries(data).map(_ref3 => {\n let [key, value] = _ref3;\n return [key, replaceObjectFilesWithUris(value, uris)];\n }));\n }\n }\n return data;\n}\n\n/**\n * Default downloader used - handles downloading from all schemes specified in the gateway URLs configuration.\n *\n * @example\n * ```jsx\n * // Can instantiate the downloader with the default gateway URLs\n * const downloader = new StorageDownloader();\n * const storage = new ThirdwebStorage({ downloader });\n * ```\n *\n * @public\n */\nclass StorageDownloader {\n async download(uri, gatewayUrls) {\n let attempts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n if (attempts > 3) {\n throw new Error(\"[FAILED_TO_DOWNLOAD_ERROR] Failed to download from URI - too many attempts failed.\");\n }\n\n // Replace recognized scheme with the highest priority gateway URL that hasn't already been attempted\n const resolvedUri = replaceSchemeWithGatewayUrl(uri, gatewayUrls, attempts);\n // If every gateway URL we know about for the designated scheme has been tried (via recursion) and failed, throw an error\n if (!resolvedUri) {\n throw new Error(\"[FAILED_TO_DOWNLOAD_ERROR] Unable to download from URI - all gateway URLs failed to respond.\");\n }\n const res = await fetch(resolvedUri);\n\n // If request to the current gateway fails, recursively try the next one we know about\n if (res.status >= 500 || res.status === 403 || res.status === 408) {\n console.warn(`Request to ${resolvedUri} failed with status ${res.status} - ${res.statusText}`);\n return this.download(uri, gatewayUrls, attempts + 1);\n }\n return res;\n }\n}\n\n/**\n * Default uploader used - handles uploading arbitrary data to IPFS\n *\n * @example\n * ```jsx\n * // Can instantiate the uploader with default configuration\n * const uploader = new StorageUploader();\n * const storage = new ThirdwebStorage({ uploader });\n *\n * // Or optionally, can pass configuration\n * const options = {\n * // Upload objects with resolvable URLs\n * uploadWithGatewayUrl: true,\n * }\n * const uploader = new StorageUploader(options);\n * const storage = new ThirdwebStorage({ uploader });\n * ```\n *\n * @public\n */\nclass IpfsUploader {\n constructor(options) {\n _defineProperty(this, \"uploadWithGatewayUrl\", void 0);\n this.uploadWithGatewayUrl = options?.uploadWithGatewayUrl || false;\n }\n async uploadBatch(data, options) {\n if (options?.uploadWithoutDirectory && data.length > 1) {\n throw new Error(\"[UPLOAD_WITHOUT_DIRECTORY_ERROR] Cannot upload more than one file or object without directory!\");\n }\n const formData = new FormData();\n const {\n form,\n fileNames\n } = this.buildFormData(formData, data, options);\n if (isBrowser()) {\n return this.uploadBatchBrowser(form, fileNames, options);\n } else {\n return this.uploadBatchNode(form, fileNames, options);\n }\n }\n\n /**\n * Fetches a one-time-use upload token that can used to upload\n * a file to storage.\n *\n * @returns - The one time use token that can be passed to the Pinata API.\n */\n async getUploadToken() {\n const res = await fetch(`${TW_IPFS_SERVER_URL}/grant`, {\n method: \"GET\",\n headers: {\n \"X-APP-NAME\":\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.NODE_ENV === \"test\" || !!process.env.CI ? \"Storage SDK CI\" : \"Storage SDK\"\n }\n });\n if (!res.ok) {\n throw new Error(`Failed to get upload token`);\n }\n const body = await res.text();\n return body;\n }\n buildFormData(form, files, options) {\n const fileNameToFileMap = new Map();\n const fileNames = [];\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n let fileName = \"\";\n let fileData = file;\n if (isFileInstance(file)) {\n if (options?.rewriteFileNames) {\n let extensions = \"\";\n if (file.name) {\n const extensionStartIndex = file.name.lastIndexOf(\".\");\n if (extensionStartIndex > -1) {\n extensions = file.name.substring(extensionStartIndex);\n }\n }\n fileName = `${i + options.rewriteFileNames.fileStartNumber}${extensions}`;\n } else {\n fileName = `${file.name}`;\n }\n } else if (isBufferOrStringWithName(file)) {\n fileData = file.data;\n if (options?.rewriteFileNames) {\n fileName = `${i + options.rewriteFileNames.fileStartNumber}`;\n } else {\n fileName = `${file.name}`;\n }\n } else {\n if (options?.rewriteFileNames) {\n fileName = `${i + options.rewriteFileNames.fileStartNumber}`;\n } else {\n fileName = `${i}`;\n }\n }\n\n // If we don't want to wrap with directory, adjust the filepath\n const filepath = options?.uploadWithoutDirectory ? `files` : `files/${fileName}`;\n if (fileNameToFileMap.has(fileName)) {\n // if the file in the map is the same as the file we are already looking at then just skip and continue\n if (isFileBufferOrStringEqual(fileNameToFileMap.get(fileName), file)) {\n // we add it to the filenames array so that we can return the correct number of urls,\n fileNames.push(fileName);\n // but then we skip because we don't need to upload it multiple times\n continue;\n }\n // otherwise if file names are the same but they are not the same file then we should throw an error (trying to upload to differnt files but with the same names)\n throw new Error(`[DUPLICATE_FILE_NAME_ERROR] File name ${fileName} was passed for more than one different file.`);\n }\n\n // add it to the map so that we can check for duplicates\n fileNameToFileMap.set(fileName, file);\n // add it to the filenames array so that we can return the correct number of urls\n fileNames.push(fileName);\n if (!isBrowser()) {\n form.append(\"file\", fileData, {\n filepath\n });\n } else {\n // browser does blob things, filepath is parsed differently on browser vs node.\n // pls pinata?\n form.append(\"file\", new Blob([fileData]), filepath);\n }\n }\n const metadata = {\n name: `Storage SDK`,\n keyvalues: {}\n };\n form.append(\"pinataMetadata\", JSON.stringify(metadata));\n if (options?.uploadWithoutDirectory) {\n form.append(\"pinataOptions\", JSON.stringify({\n wrapWithDirectory: false\n }));\n }\n return {\n form,\n // encode the file names on the way out (which is what the upload backend expects)\n fileNames: fileNames.map(fName => encodeURIComponent(fName))\n };\n }\n async uploadBatchBrowser(form, fileNames, options) {\n const token = await this.getUploadToken();\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n let timer = setTimeout(() => {\n xhr.abort();\n reject(new Error(\"Request to upload timed out! No upload progress received in 30s\"));\n }, 30000);\n xhr.upload.addEventListener(\"loadstart\", () => {\n console.log(`[${Date.now()}] [IPFS] Started`);\n });\n xhr.upload.addEventListener(\"progress\", event => {\n console.log(`[IPFS] Progress Event ${event.loaded}/${event.total}`);\n clearTimeout(timer);\n if (event.loaded < event.total) {\n timer = setTimeout(() => {\n xhr.abort();\n reject(new Error(\"Request to upload timed out! No upload progress received in 30s\"));\n }, 30000);\n } else {\n console.log(`[${Date.now()}] [IPFS] Uploaded files. Waiting for response.`);\n }\n if (event.lengthComputable && options?.onProgress) {\n options?.onProgress({\n progress: event.loaded,\n total: event.total\n });\n }\n });\n xhr.addEventListener(\"load\", () => {\n console.log(`[${Date.now()}] [IPFS] Load`);\n clearTimeout(timer);\n if (xhr.status >= 200 && xhr.status < 300) {\n let body;\n try {\n body = JSON.parse(xhr.responseText);\n } catch (err) {\n return reject(new Error(\"Failed to parse JSON from upload response\"));\n }\n const cid = body.IpfsHash;\n if (!cid) {\n throw new Error(\"Failed to get IPFS hash from upload response\");\n }\n if (options?.uploadWithoutDirectory) {\n return resolve([`ipfs://${cid}`]);\n } else {\n return resolve(fileNames.map(name => `ipfs://${cid}/${name}`));\n }\n }\n return reject(new Error(`Upload failed with status ${xhr.status} - ${xhr.responseText}`));\n });\n xhr.addEventListener(\"error\", () => {\n console.log(\"[IPFS] Load\");\n clearTimeout(timer);\n if (xhr.readyState !== 0 && xhr.readyState !== 4 || xhr.status === 0) {\n return reject(new Error(\"This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.\"));\n }\n return reject(new Error(\"Unknown upload error occured\"));\n });\n xhr.open(\"POST\", PINATA_IPFS_URL);\n xhr.setRequestHeader(\"Authorization\", `Bearer ${token}`);\n xhr.send(form);\n });\n }\n async uploadBatchNode(form, fileNames, options) {\n const token = await this.getUploadToken();\n if (options?.onProgress) {\n console.warn(\"The onProgress option is only supported in the browser\");\n }\n const res = await fetch(PINATA_IPFS_URL, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n ...form.getHeaders()\n },\n body: form.getBuffer()\n });\n const body = await res.json();\n if (!res.ok) {\n console.warn(body);\n throw new Error(\"Failed to upload files to IPFS\");\n }\n const cid = body.IpfsHash;\n if (!cid) {\n throw new Error(\"Failed to upload files to IPFS\");\n }\n if (options?.uploadWithoutDirectory) {\n return [`ipfs://${cid}`];\n } else {\n return fileNames.map(name => `ipfs://${cid}/${name}`);\n }\n }\n}\n\n/**\n * Upload and download files from decentralized storage systems.\n *\n * @example\n * ```jsx\n * // Create a default storage class without any configuration\n * const storage = new ThirdwebStorage();\n *\n * // Upload any file or JSON object\n * const uri = await storage.upload(data);\n * const result = await storage.download(uri);\n *\n * // Or configure a custom uploader, downloader, and gateway URLs\n * const gatewayUrls = {\n * // We define a mapping of schemes to gateway URLs\n * \"ipfs://\": [\n * \"https://gateway.ipfscdn.io/ipfs/\",\n * \"https://cloudflare-ipfs.com/ipfs/\",\n * \"https://ipfs.io/ipfs/\",\n * ],\n * };\n * const downloader = new StorageDownloader();\n * const uploader = new IpfsUploader();\n * const storage = new ThirdwebStorage({ uploader, downloader, gatewayUrls });\n * ```\n *\n * @public\n */\nclass ThirdwebStorage {\n constructor(options) {\n _defineProperty(this, \"uploader\", void 0);\n _defineProperty(this, \"downloader\", void 0);\n _defineProperty(this, \"gatewayUrls\", void 0);\n this.uploader = options?.uploader || new IpfsUploader();\n this.downloader = options?.downloader || new StorageDownloader();\n this.gatewayUrls = prepareGatewayUrls(options?.gatewayUrls);\n }\n\n /**\n * Resolve any scheme on a URL to get a retrievable URL for the data\n *\n * @param url - The URL to resolve the scheme of\n * @returns The URL with its scheme resolved\n *\n * @example\n * ```jsx\n * const uri = \"ipfs://example\";\n * const url = storage.resolveScheme(uri);\n * console.log(url);\n * ```\n */\n resolveScheme(url) {\n return replaceSchemeWithGatewayUrl(url, this.gatewayUrls);\n }\n\n /**\n * Downloads arbitrary data from any URL scheme.\n *\n * @param url - The URL of the data to download\n * @returns The response object fetched from the resolved URL\n *\n * @example\n * ```jsx\n * const uri = \"ipfs://example\";\n * const data = await storage.download(uri);\n * ```\n */\n async download(url) {\n return this.downloader.download(url, this.gatewayUrls);\n }\n\n /**\n * Downloads JSON data from any URL scheme.\n * Resolves any URLs with schemes to retrievable gateway URLs.\n *\n * @param url - The URL of the JSON data to download\n * @returns The JSON data fetched from the resolved URL\n *\n * @example\n * ```jsx\n * const uri = \"ipfs://example\";\n * const json = await storage.downloadJSON(uri);\n * ```\n */\n async downloadJSON(url) {\n const res = await this.download(url);\n\n // If we get a JSON object, recursively replace any schemes with gatewayUrls\n const json = await res.json();\n return replaceObjectSchemesWithGatewayUrls(json, this.gatewayUrls);\n }\n\n /**\n * Upload arbitrary file or JSON data using the configured decentralized storage system.\n * Automatically uploads any file data within JSON objects and replaces them with hashes.\n *\n * @param data - Arbitrary file or JSON data to upload\n * @param options - Options to pass through to the storage uploader class\n * @returns - The URI of the uploaded data\n *\n * @example\n * ```jsx\n * // Upload file data\n * const file = readFileSync(\"../file.jpg\");\n * const fileUri = await storage.upload(file);\n *\n * // Or upload a JSON object\n * const json = { name: \"JSON\", image: file };\n * const jsonUri = await storage.upload(json);\n * ```\n */\n async upload(data, options) {\n const [uri] = await this.uploadBatch([data], options);\n return uri;\n }\n\n /**\n * Batch upload arbitrary file or JSON data using the configured decentralized storage system.\n * Automatically uploads any file data within JSON objects and replaces them with hashes.\n *\n * @param data - Array of arbitrary file or JSON data to upload\n * @param options - Options to pass through to the storage uploader class\n * @returns - The URIs of the uploaded data\n *\n * @example\n * ```jsx\n * // Upload an array of file data\n * const files = [\n * readFileSync(\"../file1.jpg\"),\n * readFileSync(\"../file2.jpg\"),\n * ];\n * const fileUris = await storage.uploadBatch(files);\n *\n * // Upload an array of JSON objects\n * const objects = [\n * { name: \"JSON 1\", image: files[0] },\n * { name: \"JSON 2\", image: files[1] },\n * ];\n * const jsonUris = await storage.uploadBatch(objects);\n * ```\n */\n async uploadBatch(data, options) {\n data = data.filter(item => item !== undefined);\n if (!data.length) {\n return [];\n }\n const isFileArray = data.map(item => isFileOrBuffer(item) || typeof item === \"string\").every(item => !!item);\n let uris = [];\n\n // If data is an array of files, pass it through to upload directly\n if (isFileArray) {\n uris = await this.uploader.uploadBatch(data, options);\n } else {\n // Otherwise it is an array of JSON objects, so we have to prepare it first\n const metadata = (await this.uploadAndReplaceFilesWithHashes(data, options)).map(item => {\n if (typeof item === \"string\") {\n return item;\n }\n return JSON.stringify(item);\n });\n uris = await this.uploader.uploadBatch(metadata, options);\n }\n if (options?.uploadWithGatewayUrl || this.uploader.uploadWithGatewayUrl) {\n return uris.map(uri => this.resolveScheme(uri));\n } else {\n return uris;\n }\n }\n async uploadAndReplaceFilesWithHashes(data, options) {\n let cleaned = data;\n // Replace any gateway URLs with their hashes\n cleaned = replaceObjectGatewayUrlsWithSchemes(cleaned, this.gatewayUrls);\n\n // Recurse through data and extract files to upload\n const files = extractObjectFiles(cleaned);\n if (files.length) {\n // Upload all files that came from the object\n const uris = await this.uploader.uploadBatch(files, options);\n\n // Recurse through data and replace files with hashes\n cleaned = replaceObjectFilesWithUris(cleaned, uris);\n }\n if (options?.uploadWithGatewayUrl || this.uploader.uploadWithGatewayUrl) {\n // If flag is set, replace all schemes with their preferred gateway URL\n // Ex: used for Solana, where services don't resolve schemes for you, so URLs must be useable by default\n cleaned = replaceObjectSchemesWithGatewayUrls(cleaned, this.gatewayUrls);\n }\n return cleaned;\n }\n}\n\n/**\n * @internal\n */\nclass MockDownloader {\n constructor(storage) {\n _defineProperty(this, \"gatewayUrls\", DEFAULT_GATEWAY_URLS);\n _defineProperty(this, \"storage\", void 0);\n this.storage = storage;\n }\n async download(url) {\n const [cid, name] = url.includes(\"mock://\") ? url.replace(\"mock://\", \"\").split(\"/\") : url.replace(\"ipfs://\", \"\").split(\"/\");\n const data = name ? this.storage[cid][name] : this.storage[cid];\n return {\n async json() {\n return Promise.resolve(JSON.parse(data));\n },\n async text() {\n return Promise.resolve(data);\n }\n };\n }\n}\n\n/**\n * @internal\n */\nclass MockUploader {\n constructor(storage) {\n _defineProperty(this, \"storage\", void 0);\n this.storage = storage;\n }\n async uploadBatch(data, options) {\n const cid = v4();\n const uris = [];\n this.storage[cid] = {};\n let index = options?.rewriteFileNames?.fileStartNumber || 0;\n for (const file of data) {\n let contents;\n if (isFileInstance(file)) {\n contents = await file.text();\n } else if (isBufferInstance(file)) {\n contents = file.toString();\n } else if (typeof file === \"string\") {\n contents = file;\n } else {\n contents = isBufferInstance(file.data) ? file.data.toString() : file.data;\n const name = file.name ? file.name : `file_${index}`;\n this.storage[cid][name] = contents;\n uris.push(`mock://${cid}/${name}`);\n continue;\n }\n this.storage[cid][index.toString()] = contents;\n uris.push(`mock://${cid}/${index}`);\n index += 1;\n }\n return uris;\n }\n}\n\nexport { DEFAULT_GATEWAY_URLS, IpfsUploader, MockDownloader, MockUploader, PINATA_IPFS_URL, StorageDownloader, TW_IPFS_SERVER_URL, ThirdwebStorage, extractObjectFiles, isBrowser, isBufferInstance, isBufferOrStringWithName, isFileBufferOrStringEqual, isFileInstance, isFileOrBuffer, prepareGatewayUrls, replaceGatewayUrlWithScheme, replaceObjectFilesWithUris, replaceObjectGatewayUrlsWithSchemes, replaceObjectSchemesWithGatewayUrls, replaceSchemeWithGatewayUrl };\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FBAV\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n var versionParts = match[1] && match[1].split(/[._]/).slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArrays(versionParts, createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length));\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n",null,null,null,null,null,null,null,null,"/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null,null,"export const WALLETCONNECT_STYLE_SHEET = `:root {\n --animation-duration: 300ms;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.animated {\n animation-duration: var(--animation-duration);\n animation-fill-mode: both;\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n\n.fadeOut {\n animation-name: fadeOut;\n}\n\n#walletconnect-wrapper {\n -webkit-user-select: none;\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n left: 0;\n pointer-events: none;\n position: fixed;\n top: 0;\n user-select: none;\n width: 100%;\n z-index: 99999999999999;\n}\n\n.walletconnect-modal__headerLogo {\n height: 21px;\n}\n\n.walletconnect-modal__header p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n align-items: flex-start;\n display: flex;\n flex: 1;\n margin-left: 5px;\n}\n\n.walletconnect-modal__close__wrapper {\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 10000;\n background: white;\n border-radius: 26px;\n padding: 6px;\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n cursor: pointer;\n}\n\n.walletconnect-modal__close__icon {\n position: relative;\n top: 7px;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(45deg);\n}\n\n.walletconnect-modal__close__line1 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n}\n\n.walletconnect-modal__close__line2 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n transform: rotate(90deg);\n}\n\n.walletconnect-qrcode__base {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n background: rgba(37, 41, 46, 0.95);\n height: 100%;\n left: 0;\n pointer-events: auto;\n position: fixed;\n top: 0;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n width: 100%;\n will-change: opacity;\n padding: 40px;\n box-sizing: border-box;\n}\n\n.walletconnect-qrcode__text {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 10px 0 20px 0;\n text-align: center;\n width: 100%;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-qrcode__text {\n font-size: 4vw;\n }\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-qrcode__text {\n font-size: 14px;\n }\n}\n\n.walletconnect-qrcode__image {\n width: calc(100% - 30px);\n box-sizing: border-box;\n cursor: none;\n margin: 0 auto;\n}\n\n.walletconnect-qrcode__notification {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n font-size: 16px;\n padding: 16px 20px;\n border-radius: 16px;\n text-align: center;\n transition: all 0.1s ease-in-out;\n background: white;\n color: black;\n margin-bottom: -60px;\n opacity: 0;\n}\n\n.walletconnect-qrcode__notification.notification__show {\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__header {\n height: 130px;\n }\n .walletconnect-modal__base {\n overflow: auto;\n }\n}\n\n@media only screen and (min-device-width: 415px) and (max-width: 768px) {\n #content {\n max-width: 768px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 375px) and (max-width: 415px) {\n #content {\n max-width: 414px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 320px) and (max-width: 375px) {\n #content {\n max-width: 375px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (max-width: 320px) {\n #content {\n max-width: 320px;\n box-sizing: border-box;\n }\n}\n\n.walletconnect-modal__base {\n -webkit-font-smoothing: antialiased;\n background: #ffffff;\n border-radius: 24px;\n box-shadow: 0 10px 50px 5px rgba(0, 0, 0, 0.4);\n font-family: ui-rounded, \"SF Pro Rounded\", \"SF Pro Text\", medium-content-sans-serif-font,\n -apple-system, BlinkMacSystemFont, ui-sans-serif, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell,\n \"Open Sans\", \"Helvetica Neue\", sans-serif;\n margin-top: 41px;\n padding: 24px 24px 22px;\n pointer-events: auto;\n position: relative;\n text-align: center;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n will-change: transform;\n overflow: visible;\n transform: translateY(-50%);\n top: 50%;\n max-width: 500px;\n margin: auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__base {\n padding: 24px 12px;\n }\n}\n\n.walletconnect-modal__base .hidden {\n transform: translateY(150%);\n transition: 0.125s cubic-bezier(0.4, 0, 1, 1);\n}\n\n.walletconnect-modal__header {\n align-items: center;\n display: flex;\n height: 26px;\n left: 0;\n justify-content: space-between;\n position: absolute;\n top: -42px;\n width: 100%;\n}\n\n.walletconnect-modal__base .wc-logo {\n align-items: center;\n display: flex;\n height: 26px;\n margin-top: 15px;\n padding-bottom: 15px;\n pointer-events: auto;\n}\n\n.walletconnect-modal__base .wc-logo div {\n background-color: #3399ff;\n height: 21px;\n margin-right: 5px;\n mask-image: url(\"images/wc-logo.svg\") center no-repeat;\n width: 32px;\n}\n\n.walletconnect-modal__base .wc-logo p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.walletconnect-modal__base h2 {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 0 0 19px 0;\n text-align: center;\n width: 100%;\n}\n\n.walletconnect-modal__base__row {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n align-items: center;\n border-radius: 20px;\n cursor: pointer;\n display: flex;\n height: 56px;\n justify-content: space-between;\n padding: 0 15px;\n position: relative;\n margin: 0px 0px 8px;\n text-align: left;\n transition: 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n will-change: transform;\n text-decoration: none;\n}\n\n.walletconnect-modal__base__row:hover {\n background: rgba(60, 66, 82, 0.06);\n}\n\n.walletconnect-modal__base__row:active {\n background: rgba(60, 66, 82, 0.06);\n transform: scale(0.975);\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.walletconnect-modal__base__row__h3 {\n color: #25292e;\n font-size: 20px;\n font-weight: 700;\n margin: 0;\n padding-bottom: 3px;\n}\n\n.walletconnect-modal__base__row__right {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n\n.walletconnect-modal__base__row__right__app-icon {\n border-radius: 8px;\n height: 34px;\n margin: 0 11px 2px 0;\n width: 34px;\n background-size: 100%;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-modal__base__row__right__caret {\n height: 18px;\n opacity: 0.3;\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n width: 8px;\n will-change: opacity;\n}\n\n.walletconnect-modal__base__row:hover .caret,\n.walletconnect-modal__base__row:active .caret {\n opacity: 0.6;\n}\n\n.walletconnect-modal__mobile__toggle {\n width: 80%;\n display: flex;\n margin: 0 auto;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n margin-bottom: 18px;\n background: #d4d5d9;\n}\n\n.walletconnect-modal__single_wallet {\n display: flex;\n justify-content: center;\n margin-top: 7px;\n margin-bottom: 18px;\n}\n\n.walletconnect-modal__single_wallet a {\n cursor: pointer;\n color: rgb(64, 153, 255);\n font-size: 21px;\n font-weight: 800;\n text-decoration: none !important;\n margin: 0 auto;\n}\n\n.walletconnect-modal__mobile__toggle_selector {\n width: calc(50% - 8px);\n background: white;\n position: absolute;\n border-radius: 5px;\n height: calc(100% - 8px);\n top: 4px;\n transition: all 0.2s ease-in-out;\n transform: translate3d(4px, 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle.right__selected .walletconnect-modal__mobile__toggle_selector {\n transform: translate3d(calc(100% + 12px), 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle a {\n font-size: 12px;\n width: 50%;\n text-align: center;\n padding: 8px;\n margin: 0;\n font-weight: 600;\n z-index: 1;\n}\n\n.walletconnect-modal__footer {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__footer {\n margin-top: 5vw;\n }\n}\n\n.walletconnect-modal__footer a {\n cursor: pointer;\n color: #898d97;\n font-size: 15px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__footer a {\n font-size: 14px;\n }\n}\n\n.walletconnect-connect__buttons__wrapper {\n max-height: 44vh;\n}\n\n.walletconnect-connect__buttons__wrapper__android {\n margin: 50% 0;\n}\n\n.walletconnect-connect__buttons__wrapper__wrap {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin: 10px 0;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__buttons__wrapper__wrap {\n margin-top: 40px;\n }\n}\n\n.walletconnect-connect__button {\n background-color: rgb(64, 153, 255);\n padding: 12px;\n border-radius: 8px;\n text-decoration: none;\n color: rgb(255, 255, 255);\n font-weight: 500;\n}\n\n.walletconnect-connect__button__icon_anchor {\n cursor: pointer;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: 8px;\n width: 42px;\n justify-self: center;\n flex-direction: column;\n text-decoration: none !important;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-connect__button__icon_anchor {\n margin: 4px;\n }\n}\n\n.walletconnect-connect__button__icon {\n border-radius: 10px;\n height: 42px;\n margin: 0;\n width: 42px;\n background-size: cover !important;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-connect__button__text {\n color: #424952;\n font-size: 2.7vw;\n text-decoration: none !important;\n padding: 0;\n margin-top: 1.8vw;\n font-weight: 600;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__button__text {\n font-size: 16px;\n margin-top: 12px;\n }\n}\n\n.walletconnect-search__input {\n border: none;\n background: #d4d5d9;\n border-style: none;\n padding: 8px 16px;\n outline: none;\n font-style: normal;\n font-stretch: normal;\n font-size: 16px;\n font-style: normal;\n font-stretch: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 16px);\n margin: 0;\n margin-bottom: 8px;\n}\n`;","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","export const WALLETCONNECT_LOGO_SVG_URL = `data:image/svg+xml,%3Csvg height='185' viewBox='0 0 300 185' width='300' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m61.4385429 36.2562612c48.9112241-47.8881663 128.2119871-47.8881663 177.1232091 0l5.886545 5.7634174c2.445561 2.3944081 2.445561 6.2765112 0 8.6709204l-20.136695 19.715503c-1.222781 1.1972051-3.2053 1.1972051-4.428081 0l-8.100584-7.9311479c-34.121692-33.4079817-89.443886-33.4079817-123.5655788 0l-8.6750562 8.4936051c-1.2227816 1.1972041-3.205301 1.1972041-4.4280806 0l-20.1366949-19.7155031c-2.4455612-2.3944092-2.4455612-6.2765122 0-8.6709204zm218.7677961 40.7737449 17.921697 17.546897c2.445549 2.3943969 2.445563 6.2764769.000031 8.6708899l-80.810171 79.121134c-2.445544 2.394426-6.410582 2.394453-8.85616.000062-.00001-.00001-.000022-.000022-.000032-.000032l-57.354143-56.154572c-.61139-.598602-1.60265-.598602-2.21404 0-.000004.000004-.000007.000008-.000011.000011l-57.3529212 56.154531c-2.4455368 2.394432-6.4105755 2.394472-8.8561612.000087-.0000143-.000014-.0000296-.000028-.0000449-.000044l-80.81241943-79.122185c-2.44556021-2.394408-2.44556021-6.2765115 0-8.6709197l17.92172963-17.5468673c2.4455602-2.3944082 6.4105989-2.3944082 8.8561602 0l57.3549775 56.155357c.6113908.598602 1.602649.598602 2.2140398 0 .0000092-.000009.0000174-.000017.0000265-.000024l57.3521031-56.155333c2.445505-2.3944633 6.410544-2.3945531 8.856161-.0002.000034.0000336.000068.0000673.000101.000101l57.354902 56.155432c.61139.598601 1.60265.598601 2.21404 0l57.353975-56.1543249c2.445561-2.3944092 6.410599-2.3944092 8.85616 0z' fill='%233b99fc'/%3E%3C/svg%3E`;","export const WALLETCONNECT_HEADER_TEXT = \"WalletConnect\";\n\nexport const ANIMATION_DURATION = 300;\nexport const DEFAULT_BUTTON_COLOR = \"rgb(64, 153, 255)\";\n\nexport const WALLETCONNECT_WRAPPER_ID = \"walletconnect-wrapper\";\nexport const WALLETCONNECT_STYLE_ID = \"walletconnect-style-sheet\";\nexport const WALLETCONNECT_MODAL_ID = \"walletconnect-qrcode-modal\";\nexport const WALLETCONNECT_CLOSE_BUTTON_ID = \"walletconnect-qrcode-close\";\nexport const WALLETCONNECT_CTA_TEXT_ID = \"walletconnect-qrcode-text\";\nexport const WALLETCONNECT_CONNECT_BUTTON_ID = \"walletconnect-connect-button\";\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\nimport { WALLETCONNECT_LOGO_SVG_URL } from \"../assets/logo\";\nimport { WALLETCONNECT_HEADER_TEXT, WALLETCONNECT_CLOSE_BUTTON_ID } from \"../constants\";\n\ninterface HeaderProps {\n onClose: any;\n}\n\nfunction Header(props: HeaderProps) {\n return (\n
\n \n

{WALLETCONNECT_HEADER_TEXT}

\n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default Header;\n","import * as React from \"react\";\n\nimport { WALLETCONNECT_CONNECT_BUTTON_ID } from \"../constants\";\n\ninterface ConnectButtonProps {\n name: string;\n color: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction ConnectButton(props: ConnectButtonProps) {\n return (\n \n {props.name}\n \n );\n}\n\nexport default ConnectButton;\n","export const CARET_SVG_URL = `data:image/svg+xml,%3Csvg fill='none' height='18' viewBox='0 0 8 18' width='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath clip-rule='evenodd' d='m.586301.213898c-.435947.33907-.5144813.967342-.175411 1.403292l4.87831 6.27212c.28087.36111.28087.86677 0 1.22788l-4.878311 6.27211c-.33907.436-.260536 1.0642.175412 1.4033.435949.3391 1.064219.2605 1.403289-.1754l4.87832-6.2721c.84259-1.08336.84259-2.60034 0-3.68367l-4.87832-6.27212c-.33907-.4359474-.96734-.514482-1.403289-.175412z' fill='%233c4252' fill-rule='evenodd'/%3E%3C/svg%3E`;","import * as React from \"react\";\nimport { CARET_SVG_URL } from \"../assets/caret\";\n\ninterface WalletButtonProps {\n color: string;\n name: string;\n logo: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletButton(props: WalletButtonProps) {\n const { color, href, name, logo, onClick } = props;\n return (\n \n

{name}

\n
\n
\n \n \n \n );\n}\n\nexport default WalletButton;\n","import * as React from \"react\";\n\ninterface WalletIconProps {\n color: string;\n logo: string;\n href: string;\n name: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletIcon(props: WalletIconProps) {\n const { color, href, name, logo, onClick } = props;\n const fontSize = window.innerWidth < 768 ? `${name.length > 8 ? 2.5 : 2.7}vw` : \"inherit\";\n return (\n \n \n
\n {name}\n
\n \n );\n}\n\nexport default WalletIcon;\n","import * as React from \"react\";\nimport { IMobileRegistryEntry, IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { isAndroid, formatIOSMobile, saveMobileLinkInfo } from \"@walletconnect/browser-utils\";\n\nimport { DEFAULT_BUTTON_COLOR, WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport ConnectButton from \"./ConnectButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletButton from \"./WalletButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletIcon from \"./WalletIcon\";\nimport { TextMap } from \"../types\";\n\ninterface LinkDisplayProps {\n mobile: boolean;\n text: TextMap;\n uri: string;\n qrcodeModalOptions?: IQRCodeModalOptions;\n links: IMobileRegistryEntry[];\n errorMessage: string;\n}\n\nconst GRID_MIN_COUNT = 5;\nconst LINKS_PER_PAGE = 12;\n\nfunction LinkDisplay(props: LinkDisplayProps) {\n const android = isAndroid();\n const [input, setInput] = React.useState(\"\");\n const [filter, setFilter] = React.useState(\"\");\n const [page, setPage] = React.useState(1);\n const links = filter\n ? props.links.filter(link => link.name.toLowerCase().includes(filter.toLowerCase()))\n : props.links;\n const errorMessage = props.errorMessage;\n const grid = filter || links.length > GRID_MIN_COUNT;\n const pages = Math.ceil(links.length / LINKS_PER_PAGE);\n const range = [(page - 1) * LINKS_PER_PAGE + 1, page * LINKS_PER_PAGE];\n const pageLinks = links.length\n ? links.filter((_, index) => index + 1 >= range[0] && index + 1 <= range[1])\n : [];\n const hasPaging = !!(!android && pages > 1);\n let filterTimeout: any = undefined;\n function handleInput(e) {\n setInput(e.target.value);\n clearTimeout(filterTimeout);\n if (e.target.value) {\n filterTimeout = setTimeout(() => {\n setFilter(e.target.value);\n setPage(1);\n }, 1000);\n } else {\n setInput(\"\");\n setFilter(\"\");\n setPage(1);\n }\n }\n\n return (\n
\n

\n {android ? props.text.connect_mobile_wallet : props.text.choose_preferred_wallet}\n

\n {!android && (\n \n )}\n \n {!android ? (\n pageLinks.length ? (\n pageLinks.map((entry: IMobileRegistryEntry) => {\n const { color, name, shortName, logo } = entry;\n const href = formatIOSMobile(props.uri, entry);\n const handleClickIOS = React.useCallback(() => {\n saveMobileLinkInfo({\n name,\n href,\n });\n }, [pageLinks]);\n return !grid ? (\n \n ) : (\n \n );\n })\n ) : (\n <>\n

\n {errorMessage.length\n ? props.errorMessage\n : !!props.links.length && !links.length\n ? props.text.no_wallets_found\n : props.text.loading}\n

\n \n )\n ) : (\n {\n saveMobileLinkInfo({\n name: \"Unknown\",\n href: props.uri,\n });\n }, [])}\n />\n )}\n
\n {hasPaging && (\n
\n {Array(pages)\n .fill(0)\n .map((_, index) => {\n const pageNumber = index + 1;\n const selected = page === pageNumber;\n return (\n setPage(pageNumber)}\n >\n {pageNumber}\n \n );\n })}\n
\n )}\n \n );\n}\n\nexport default LinkDisplay;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\ninterface NotificationProps {\n message: string;\n}\n\nfunction Notification(props: NotificationProps) {\n const show = !!props.message.trim();\n return (\n
\n {props.message}\n
\n );\n}\n\nexport default Notification;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\nimport QRCode from \"qrcode\";\nimport copy from \"copy-to-clipboard\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Notification from \"./Notification\";\n\nimport { WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\nasync function formatQRCodeImage(data: string) {\n let result = \"\";\n const dataString = await QRCode.toString(data, { margin: 0, type: \"svg\" });\n if (typeof dataString === \"string\") {\n result = dataString.replace(\" {\n (async () => {\n setSvg(await formatQRCodeImage(props.uri));\n })();\n }, []);\n\n const copyToClipboard = () => {\n const success = copy(props.uri);\n if (success) {\n setNotification(props.text.copied_to_clipboard);\n setInterval(() => setNotification(\"\"), 1200);\n } else {\n setNotification(\"Error\");\n setInterval(() => setNotification(\"\"), 1200);\n }\n };\n\n return (\n
\n

\n {props.text.scan_qrcode_with_wallet}\n

\n
\n \n \n
\n );\n}\n\nexport default QRCodeDisplay;\n","import * as React from \"react\";\nimport {\n IMobileRegistryEntry,\n IQRCodeModalOptions,\n IAppRegistry,\n IMobileLinkInfo,\n} from \"@walletconnect/types\";\nimport {\n isMobile,\n isAndroid,\n formatIOSMobile,\n saveMobileLinkInfo,\n getMobileLinkRegistry,\n getWalletRegistryUrl,\n formatMobileRegistry,\n} from \"@walletconnect/browser-utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Header from \"./Header\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport LinkDisplay from \"./LinkDisplay\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport QRCodeDisplay from \"./QRCodeDisplay\";\n\nimport { WALLETCONNECT_MODAL_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\ninterface ModalProps {\n text: TextMap;\n uri: string;\n onClose: any;\n qrcodeModalOptions?: IQRCodeModalOptions;\n}\n\nfunction Modal(props: ModalProps) {\n const android = isAndroid();\n const mobile = isMobile();\n\n const whitelist = mobile\n ? props.qrcodeModalOptions && props.qrcodeModalOptions.mobileLinks\n ? props.qrcodeModalOptions.mobileLinks\n : undefined\n : props.qrcodeModalOptions && props.qrcodeModalOptions.desktopLinks\n ? props.qrcodeModalOptions.desktopLinks\n : undefined;\n const [loading, setLoading] = React.useState(false);\n const [fetched, setFetched] = React.useState(false);\n const [displayQRCode, setDisplayQRCode] = React.useState(!mobile);\n const displayProps = {\n mobile,\n text: props.text,\n uri: props.uri,\n qrcodeModalOptions: props.qrcodeModalOptions,\n };\n\n const [singleLinkHref, setSingleLinkHref] = React.useState(\"\");\n const [hasSingleLink, setHasSingleLink] = React.useState(false);\n const [links, setLinks] = React.useState([]);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n\n const getLinksIfNeeded = () => {\n if (fetched || loading || (whitelist && !whitelist.length) || links.length > 0) {\n return;\n }\n\n React.useEffect(() => {\n const initLinks = async () => {\n if (android) return;\n setLoading(true);\n try {\n const url =\n props.qrcodeModalOptions && props.qrcodeModalOptions.registryUrl\n ? props.qrcodeModalOptions.registryUrl\n : getWalletRegistryUrl();\n const registryResponse = await fetch(url)\n const registry = (await registryResponse.json()).listings as IAppRegistry;\n const platform = mobile ? \"mobile\" : \"desktop\";\n const _links = getMobileLinkRegistry(formatMobileRegistry(registry, platform), whitelist);\n setLoading(false);\n setFetched(true);\n setErrorMessage(!_links.length ? props.text.no_supported_wallets : \"\");\n setLinks(_links);\n const hasSingleLink = _links.length === 1;\n if (hasSingleLink) {\n setSingleLinkHref(formatIOSMobile(props.uri, _links[0]));\n setDisplayQRCode(true);\n }\n setHasSingleLink(hasSingleLink);\n } catch (e) {\n setLoading(false);\n setFetched(true);\n setErrorMessage(props.text.something_went_wrong);\n console.error(e); // eslint-disable-line no-console\n }\n };\n initLinks();\n });\n };\n\n getLinksIfNeeded();\n\n const rightSelected = mobile ? displayQRCode : !displayQRCode;\n return (\n
\n
\n
\n {hasSingleLink && displayQRCode ? (\n
\n saveMobileLinkInfo({ name: links[0].name, href: singleLinkHref })}\n href={singleLinkHref}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {props.text.connect_with + \" \" + (hasSingleLink ? links[0].name : \"\") + \" ›\"}\n \n
\n ) : android || loading || (!loading && links.length) ? (\n \n \n ) : null}\n\n
\n {displayQRCode || (!android && !loading && !links.length) ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n}\n\nexport default Modal;\n","import { TextMap } from \"../types\";\n\nconst de: TextMap = {\n choose_preferred_wallet: \"Wähle bevorzugte Wallet\",\n connect_mobile_wallet: \"Verbinde mit Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scanne den QR-code mit einer WalletConnect kompatiblen Wallet\",\n connect: \"Verbinden\",\n qrcode: \"QR-Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"In die Zwischenablage kopieren\",\n copied_to_clipboard: \"In die Zwischenablage kopiert!\",\n connect_with: \"Verbinden mit Hilfe von\",\n loading: \"Laden...\",\n something_went_wrong: \"Etwas ist schief gelaufen\",\n no_supported_wallets: \"Es gibt noch keine unterstützten Wallet\",\n no_wallets_found: \"keine Wallet gefunden\",\n};\n\nexport default de;\n","import { TextMap } from \"../types\";\n\nimport de from \"./de\";\nimport en from \"./en\";\nimport es from \"./es\";\nimport fr from \"./fr\";\nimport ko from \"./ko\";\nimport pt from \"./pt\";\nimport zh from \"./zh\";\nimport fa from \"./fa\";\n\nconst languages: { [lang: string]: TextMap } = { de, en, es, fr, ko, pt, zh, fa };\n\nexport default languages;\n","import { TextMap } from \"../types\";\n\nconst en: TextMap = {\n choose_preferred_wallet: \"Choose your preferred wallet\",\n connect_mobile_wallet: \"Connect to Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scan QR code with a WalletConnect-compatible wallet\",\n connect: \"Connect\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copy to clipboard\",\n copied_to_clipboard: \"Copied to clipboard!\",\n connect_with: \"Connect with\",\n loading: \"Loading...\",\n something_went_wrong: \"Something went wrong\",\n no_supported_wallets: \"There are no supported wallets yet\",\n no_wallets_found: \"No wallets found\",\n};\n\nexport default en;\n","import { TextMap } from \"../types\";\n\nconst es: TextMap = {\n choose_preferred_wallet: \"Elige tu billetera preferida\",\n connect_mobile_wallet: \"Conectar a billetera móvil\",\n scan_qrcode_with_wallet: \"Escanea el código QR con una billetera compatible con WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvil\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Conectar mediante\",\n loading: \"Cargando...\",\n something_went_wrong: \"Algo salió mal\",\n no_supported_wallets: \"Todavía no hay billeteras compatibles\",\n no_wallets_found: \"No se encontraron billeteras\",\n};\n\nexport default es;\n","import { TextMap } from \"../types\";\n\nconst fr: TextMap = {\n choose_preferred_wallet: \"Choisissez votre portefeuille préféré\",\n connect_mobile_wallet: \"Se connecter au portefeuille mobile\",\n scan_qrcode_with_wallet: \"Scannez le QR code avec un portefeuille compatible WalletConnect\",\n connect: \"Se connecter\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copier\",\n copied_to_clipboard: \"Copié!\",\n connect_with: \"Connectez-vous à l'aide de\",\n loading: \"Chargement...\",\n something_went_wrong: \"Quelque chose a mal tourné\",\n no_supported_wallets: \"Il n'y a pas encore de portefeuilles pris en charge\",\n no_wallets_found: \"Aucun portefeuille trouvé\",\n};\n\nexport default fr;\n","import { TextMap } from \"../types\";\n\nconst ko: TextMap = {\n choose_preferred_wallet: \"원하는 지갑을 선택하세요\",\n connect_mobile_wallet: \"모바일 지갑과 연결\",\n scan_qrcode_with_wallet: \"WalletConnect 지원 지갑에서 QR코드를 스캔하세요\",\n connect: \"연결\",\n qrcode: \"QR 코드\",\n mobile: \"모바일\",\n desktop: \"데스크탑\",\n copy_to_clipboard: \"클립보드에 복사\",\n copied_to_clipboard: \"클립보드에 복사되었습니다!\",\n connect_with: \"와 연결하다\",\n loading: \"로드 중...\",\n something_went_wrong: \"문제가 발생했습니다.\",\n no_supported_wallets: \"아직 지원되는 지갑이 없습니다\",\n no_wallets_found: \"지갑을 찾을 수 없습니다\",\n};\n\nexport default ko;\n","import { TextMap } from \"../types\";\n\nconst pt: TextMap = {\n choose_preferred_wallet: \"Escolha sua carteira preferida\",\n connect_mobile_wallet: \"Conectar-se à carteira móvel\",\n scan_qrcode_with_wallet: \"Ler o código QR com uma carteira compatível com WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvel\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Ligar por meio de\",\n loading: \"Carregamento...\",\n something_went_wrong: \"Algo correu mal\",\n no_supported_wallets: \"Ainda não há carteiras suportadas\",\n no_wallets_found: \"Nenhuma carteira encontrada\",\n};\n\nexport default pt;\n","import { TextMap } from \"../types\";\n\nconst zh: TextMap = {\n choose_preferred_wallet: \"选择你的钱包\",\n connect_mobile_wallet: \"连接至移动端钱包\",\n scan_qrcode_with_wallet: \"使用兼容 WalletConnect 的钱包扫描二维码\",\n connect: \"连接\",\n qrcode: \"二维码\",\n mobile: \"移动\",\n desktop: \"桌面\",\n copy_to_clipboard: \"复制到剪贴板\",\n copied_to_clipboard: \"复制到剪贴板成功!\",\n connect_with: \"通过以下方式连接\",\n loading: \"正在加载...\",\n something_went_wrong: \"出了问题\",\n no_supported_wallets: \"目前还没有支持的钱包\",\n no_wallets_found: \"没有找到钱包\",\n};\n\nexport default zh;\n","import { TextMap } from \"../types\";\n\nconst fa: TextMap = {\n choose_preferred_wallet: \"کیف پول مورد نظر خود را انتخاب کنید\",\n connect_mobile_wallet: \"به کیف پول موبایل وصل شوید\",\n scan_qrcode_with_wallet: \"کد QR را با یک کیف پول سازگار با WalletConnect اسکن کنید\",\n connect: \"اتصال\",\n qrcode: \"کد QR\",\n mobile: \"سیار\",\n desktop: \"دسکتاپ\",\n copy_to_clipboard: \"کپی به کلیپ بورد\",\n copied_to_clipboard: \"در کلیپ بورد کپی شد!\",\n connect_with: \"ارتباط با\",\n loading: \"...بارگذاری\",\n something_went_wrong: \"مشکلی پیش آمد\",\n no_supported_wallets: \"هنوز هیچ کیف پول پشتیبانی شده ای وجود ندارد\",\n no_wallets_found: \"هیچ کیف پولی پیدا نشد\",\n};\n\nexport default fa;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n// @ts-ignore\nimport * as ReactDOM from \"react-dom\";\nimport { getDocumentOrThrow, getNavigatorOrThrow } from \"@walletconnect/browser-utils\";\n\nimport { WALLETCONNECT_STYLE_SHEET } from \"./assets/style\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Modal from \"./components/Modal\";\nimport Languages from \"./languages\";\nimport {\n ANIMATION_DURATION,\n WALLETCONNECT_WRAPPER_ID,\n WALLETCONNECT_MODAL_ID,\n WALLETCONNECT_STYLE_ID,\n} from \"./constants\";\nimport { IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { TextMap } from \"./types\";\n\nfunction injectStyleSheet() {\n const doc = getDocumentOrThrow();\n const prev = doc.getElementById(WALLETCONNECT_STYLE_ID);\n if (prev) {\n doc.head.removeChild(prev);\n }\n const style = doc.createElement(\"style\");\n style.setAttribute(\"id\", WALLETCONNECT_STYLE_ID);\n style.innerText = WALLETCONNECT_STYLE_SHEET;\n doc.head.appendChild(style);\n}\n\nfunction renderWrapper(): HTMLDivElement {\n const doc = getDocumentOrThrow();\n const wrapper = doc.createElement(\"div\");\n wrapper.setAttribute(\"id\", WALLETCONNECT_WRAPPER_ID);\n doc.body.appendChild(wrapper);\n return wrapper;\n}\n\nfunction triggerCloseAnimation(): void {\n const doc = getDocumentOrThrow();\n const modal = doc.getElementById(WALLETCONNECT_MODAL_ID);\n if (modal) {\n modal.className = modal.className.replace(\"fadeIn\", \"fadeOut\");\n setTimeout(() => {\n const wrapper = doc.getElementById(WALLETCONNECT_WRAPPER_ID);\n if (wrapper) {\n doc.body.removeChild(wrapper);\n }\n }, ANIMATION_DURATION);\n }\n}\n\nfunction getWrappedCallback(cb: any): any {\n return () => {\n triggerCloseAnimation();\n if (cb) {\n cb();\n }\n };\n}\n\nfunction getText(): TextMap {\n const lang = getNavigatorOrThrow().language.split(\"-\")[0] || \"en\";\n return Languages[lang] || Languages[\"en\"];\n}\n\nexport function open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n injectStyleSheet();\n const wrapper = renderWrapper();\n ReactDOM.render(\n ,\n wrapper,\n );\n}\n\nexport function close() {\n triggerCloseAnimation();\n}\n","import { IQRCodeModalOptions } from \"@walletconnect/types\";\n\nimport * as nodeLib from \"./node\";\nimport * as browserLib from \"./browser\";\n\nconst isNode = () =>\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\";\n\nfunction open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n // eslint-disable-next-line no-console\n console.log(uri);\n if (isNode()) {\n nodeLib.open(uri);\n } else {\n browserLib.open(uri, cb, qrcodeModalOptions);\n }\n}\n\nfunction close() {\n if (isNode()) {\n nodeLib.close();\n } else {\n browserLib.close();\n }\n}\n\nexport default { open, close };\n","import QRCode from \"qrcode\";\n\nexport function open(uri: string) {\n // eslint-disable-next-line no-console\n QRCode.toString(uri, { type: \"terminal\" }).then(console.log);\n}\n\nexport function close() {\n // empty\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tnewVNode._children = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport class PureComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\t// Some third-party libraries check if this property is present\n\t\tthis.isPureReactComponent = true;\n\t}\n\n\tshouldComponentUpdate(props, state) {\n\t\treturn (\n\t\t\tshallowDiffers(this.props, props) || shallowDiffers(this.state, state)\n\t\t);\n\t}\n}\n","import { createElement } from 'preact';\nimport { shallowDiffers, assign } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, assign({}, props));\n\t}\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref);\n\t}\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (!children) return null;\n\treturn toChildArray(children).reduce(\n\t\t(acc, value, index) => acc.concat(fn(value, index)),\n\t\t[]\n\t);\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tchildren = toChildArray(children);\n\t\tif (children.length !== 1) {\n\t\t\tthrow new Error('Children.only() expects only one child.');\n\t\t}\n\t\treturn children[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode._component);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {Component} suspendingComponent The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingComponent) {\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = c.state._suspended;\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\treturn [\n\t\tcreateElement(Component, null, state._suspended ? null : props.children),\n\t\tstate._suspended && props.fallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('../src/internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tconst list = this;\n\tlist._map.forEach((node, child) => {\n\t\tresolve(list, child, node);\n\t});\n};\n","import { createElement, hydrate, render, _unmount } from 'preact';\n\nclass ContextProvider {\n\tgetChildContext() {\n\t\treturn this.props.context;\n\t}\n\trender(props) {\n\t\treturn props.children;\n\t}\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n */\nfunction Portal(props) {\n\tlet _this = this;\n\tlet container = props.container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops.vnode\n\t);\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props.vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n\n\t_this.componentWillUnmount = () => {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\treturn null;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { vnode, container });\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport { applyEventNormalization } from './events';\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\twhile (parent.firstChild) {\n\t\t\tparent.removeChild(parent.firstChild);\n\t\t}\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = () => {};\n\tlet stoppedPropagating = false,\n\t\tdefaultPrevented = false;\n\n\tconst origStopPropagation = e.stopPropagation;\n\te.stopPropagation = () => {\n\t\torigStopPropagation.call(e);\n\t\tstoppedPropagating = true;\n\t};\n\n\tconst origPreventDefault = e.preventDefault;\n\te.preventDefault = () => {\n\t\torigPreventDefault.call(e);\n\t\tdefaultPrevented = true;\n\t};\n\n\te.isPropagationStopped = () => stoppedPropagating;\n\te.isDefaultPrevented = () => defaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\n// Patch in `UNSAFE_*` lifecycle hooks\nfunction setSafeDescriptor(proto, key) {\n\tif (proto['UNSAFE_' + key] && !proto[key]) {\n\t\tObject.defineProperty(proto, key, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn this['UNSAFE_' + key];\n\t\t\t},\n\t\t\t// This `set` is only used if a user sets a lifecycle like cWU\n\t\t\t// after setting a lifecycle like UNSAFE_cWU. I doubt anyone\n\t\t\t// actually does this in practice so not testing it\n\t\t\t/* istanbul ignore next */\n\t\t\tset(v) {\n\t\t\t\tthis['UNSAFE_' + key] = v;\n\t\t\t}\n\t\t});\n\t}\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\n\tif (type) {\n\t\t// Alias `class` prop to `className` if available\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) props.class = props.className;\n\t\t\tObject.defineProperty(props, 'className', classNameDescriptor);\n\t\t}\n\n\t\t// Apply DOM VNode compat\n\t\tif (typeof type != 'function') {\n\t\t\t// Apply defaultValue to value\n\t\t\tif (props.defaultValue && props.value !== undefined) {\n\t\t\t\tif (!props.value && props.value !== 0) {\n\t\t\t\t\tprops.value = props.defaultValue;\n\t\t\t\t}\n\t\t\t\tdelete props.defaultValue;\n\t\t\t}\n\n\t\t\t// Add support for array select values: value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = (\n\t\t(!isHydrating && replaceNode) ||\n\t\tparentDom\n\t)._children = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tconst prevScu = currentComponent.shouldComponentUpdate;\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\tcurrentComponent.shouldComponentUpdate = function(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t};\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","\nvar canPromise = require('./can-promise')\n\nvar QRCode = require('./core/qrcode')\nvar CanvasRenderer = require('./renderer/canvas')\nvar SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n var args = [].slice.call(arguments, 1)\n var argsNum = args.length\n var isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n var data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nvar getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n var posCount = Math.floor(version / 7) + 2\n var size = getSymbolSize(version)\n var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n var positions = [size - 7] // Last coord is always (size - 7)\n\n for (var i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * var pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var coords = []\n var pos = exports.getRowColCoords(version)\n var posLength = pos.length\n\n for (var i = 0; i < posLength; i++) {\n for (var j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","var Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nvar ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n var i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n var bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","var BufferUtil = require('../utils/buffer')\n\n/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = BufferUtil.alloc(size * size)\n this.reservedBit = BufferUtil.alloc(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n var index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","var BufferUtil = require('../utils/buffer')\nvar Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = BufferUtil.from(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (var i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","var ECLevel = require('./error-correction-level')\r\n\r\nvar EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nvar EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","var getSymbolSize = require('./utils').getSymbolSize\nvar FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","var Utils = require('./utils')\n\nvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nvar G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n var data = ((errorCorrectionLevel.bit << 3) | mask)\n var d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","var BufferUtil = require('../utils/buffer')\n\nvar EXP_TABLE = BufferUtil.alloc(512)\nvar LOG_TABLE = BufferUtil.alloc(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n var x = 1\n for (var i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","var Mode = require('./mode')\nvar Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n var i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n var value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nvar PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n var size = data.size\n var points = 0\n var sameCountCol = 0\n var sameCountRow = 0\n var lastCol = null\n var lastRow = null\n\n for (var row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (var col = 0; col < size; col++) {\n var module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n var size = data.size\n var points = 0\n\n for (var row = 0; row < size - 1; row++) {\n for (var col = 0; col < size - 1; col++) {\n var last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n var size = data.size\n var points = 0\n var bitsCol = 0\n var bitsRow = 0\n\n for (var row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (var col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n var darkCount = 0\n var modulesCount = data.data.length\n\n for (var i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n var size = data.size\n\n for (var col = 0; col < size; col++) {\n for (var row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n var numPatterns = Object.keys(exports.Patterns).length\n var bestPattern = 0\n var lowerPenalty = Infinity\n\n for (var p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n var penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","var VersionCheck = require('./version-check')\nvar Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","var Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n var i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n var remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","var BufferUtil = require('../utils/buffer')\nvar GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Buffer} p1 Polynomial\n * @param {Buffer} p2 Polynomial\n * @return {Buffer} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n var coeff = BufferUtil.alloc(p1.length + p2.length - 1)\n\n for (var i = 0; i < p1.length; i++) {\n for (var j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Buffer} divident Polynomial\n * @param {Buffer} divisor Polynomial\n * @return {Buffer} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n var result = BufferUtil.from(divident)\n\n while ((result.length - divisor.length) >= 0) {\n var coeff = result[0]\n\n for (var i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n var offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Buffer} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n var poly = BufferUtil.from([1])\n for (var i = 0; i < degree; i++) {\n poly = exports.mul(poly, [1, GF.exp(i)])\n }\n\n return poly\n}\n","var BufferUtil = require('../utils/buffer')\nvar Utils = require('./utils')\nvar ECLevel = require('./error-correction-level')\nvar BitBuffer = require('./bit-buffer')\nvar BitMatrix = require('./bit-matrix')\nvar AlignmentPattern = require('./alignment-pattern')\nvar FinderPattern = require('./finder-pattern')\nvar MaskPattern = require('./mask-pattern')\nvar ECCode = require('./error-correction-code')\nvar ReedSolomonEncoder = require('./reed-solomon-encoder')\nvar Version = require('./version')\nvar FormatInfo = require('./format-info')\nvar Mode = require('./mode')\nvar Segments = require('./segments')\nvar isArray = require('isarray')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n var size = matrix.size\n var pos = FinderPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n var size = matrix.size\n\n for (var r = 8; r < size - 8; r++) {\n var value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n var pos = AlignmentPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n var size = matrix.size\n var bits = Version.getEncodedBits(version)\n var row, col, mod\n\n for (var i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n var size = matrix.size\n var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n var i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Buffer} data Data codewords\n */\nfunction setupData (matrix, data) {\n var size = matrix.size\n var inc = -1\n var row = size - 1\n var bitIndex = 7\n var byteIndex = 0\n\n for (var col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n var dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n var buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (var i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n var blocksInGroup2 = totalCodewords % ecTotalBlocks\n var blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n var rs = new ReedSolomonEncoder(ecCount)\n\n var offset = 0\n var dcData = new Array(ecTotalBlocks)\n var ecData = new Array(ecTotalBlocks)\n var maxDataSize = 0\n var buffer = BufferUtil.from(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (var b = 0; b < ecTotalBlocks; b++) {\n var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n var data = BufferUtil.alloc(totalCodewords)\n var index = 0\n var i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n var segments\n\n if (isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n var estimatedVersion = version\n\n if (!estimatedVersion) {\n var rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments,\n errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n var bestVersion = Version.getBestVersionForData(segments,\n errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n var dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n var moduleCount = Utils.getSymbolSize(version)\n var modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n var errorCorrectionLevel = ECLevel.M\n var version\n var mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","var BufferUtil = require('../utils/buffer')\nvar Polynomial = require('./polynomial')\nvar Buffer = require('buffer').Buffer\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Buffer} data Buffer containing input data\n * @return {Buffer} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n var pad = BufferUtil.alloc(this.degree)\n var paddedData = Buffer.concat([data, pad], data.length + this.degree)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n var remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n var start = this.degree - remainder.length\n if (start > 0) {\n var buff = BufferUtil.alloc(this.degree)\n remainder.copy(buff, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","var numeric = '[0-9]+'\nvar alphanumeric = '[A-Z $%*+\\\\-./:]+'\nvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nvar TEST_KANJI = new RegExp('^' + kanji + '$')\nvar TEST_NUMERIC = new RegExp('^' + numeric + '$')\nvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","var Mode = require('./mode')\nvar NumericData = require('./numeric-data')\nvar AlphanumericData = require('./alphanumeric-data')\nvar ByteData = require('./byte-data')\nvar KanjiData = require('./kanji-data')\nvar Regex = require('./regex')\nvar Utils = require('./utils')\nvar dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n var segments = []\n var result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n var byteSegs\n var kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n var nodes = []\n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n var table = {}\n var graph = {'start': {}}\n var prevNodeIds = ['start']\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeGroup = nodes[i]\n var currentNodeIds = []\n\n for (var j = 0; j < nodeGroup.length; j++) {\n var node = nodeGroup[j]\n var key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (var n = 0; n < prevNodeIds.length; n++) {\n var prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]]['end'] = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n var mode\n var bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n var nodes = buildNodes(segs)\n var graph = buildGraph(nodes, version)\n var path = dijkstra.find_path(graph.map, 'start', 'end')\n\n var optimizedSegs = []\n for (var i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","var toSJISFunction\nvar CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n var digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","var Utils = require('./utils')\nvar ECCode = require('./error-correction-code')\nvar ECLevel = require('./error-correction-level')\nvar Mode = require('./mode')\nvar VersionCheck = require('./version-check')\nvar isArray = require('isarray')\n\n// Generator polynomial used to encode version information\nvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nvar G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n var totalBits = 0\n\n segments.forEach(function (data) {\n var reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n var length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n var seg\n\n var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n var d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","var Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n var opts = options\n var canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n var size = Utils.getImageWidth(qrData.modules.size, opts)\n\n var ctx = canvasEl.getContext('2d')\n var image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n var opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n var canvasEl = exports.render(qrData, canvas, opts)\n\n var type = opts.type || 'image/png'\n var rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","var Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n var alpha = color.a / 255\n var str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n var str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n var path = ''\n var moveBy = 0\n var newRow = false\n var lineLength = 0\n\n for (var i = 0; i < data.length; i++) {\n var col = Math.floor(i % size)\n var row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n var opts = Utils.getOptions(options)\n var size = qrData.modules.size\n var data = qrData.modules.data\n var qrcodesize = size + opts.margin * 2\n\n var bg = !opts.color.light.a\n ? ''\n : ''\n\n var path =\n ''\n\n var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n var svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n var hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n var hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n var margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0 ? 4 : options.margin\n\n var width = options.width && options.width >= 21 ? options.width : undefined\n var scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n var scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n var size = qr.modules.size\n var data = qr.modules.data\n var scale = exports.getScale(size, opts)\n var symbolSize = Math.floor((size + opts.margin * 2) * scale)\n var scaledMargin = opts.margin * scale\n var palette = [opts.color.light, opts.color.dark]\n\n for (var i = 0; i < symbolSize; i++) {\n for (var j = 0; j < symbolSize; j++) {\n var posDst = (i * symbolSize + j) * 4\n var pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n var iSrc = Math.floor((i - scaledMargin) / scale)\n var jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","/**\n * Implementation of a subset of node.js Buffer methods for the browser.\n * Based on https://github.com/feross/buffer\n */\n\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar isArray = require('isarray')\n\nfunction typedArraySupport () {\n // Can typed array instances be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n\nfunction Buffer (arg, offset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, offset, length)\n }\n\n if (typeof arg === 'number') {\n return allocUnsafe(this, arg)\n }\n\n return from(this, arg, offset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\nfunction createBuffer (that, length) {\n var buf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = that\n if (buf === null) {\n buf = new Buffer(length)\n }\n buf.length = length\n }\n\n return buf\n}\n\nfunction allocUnsafe (that, size) {\n var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n buf[i] = 0\n }\n }\n\n return buf\n}\n\nfunction fromString (that, string) {\n var length = byteLength(string) | 0\n var buf = createBuffer(that, length)\n\n var actual = buf.write(string)\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 buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\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 var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = fromArrayLike(that, buf)\n }\n\n return buf\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(that, len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\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' && Array.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 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 byteLength (string) {\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 return utf8ToBytes(string).length\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 utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction from (that, value, offset, 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, offset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, offset)\n }\n\n return fromObject(that, value)\n}\n\nBuffer.prototype.write = function write (string, offset, length) {\n // Buffer#write(string)\n if (offset === undefined) {\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n } else {\n length = undefined\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 return utf8Write(this, string, offset, length)\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 // Return an augmented `Uint8Array` instance\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\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\nBuffer.prototype.fill = function fill (val, start, end) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\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 } 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 : new Buffer(val)\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\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 createBuffer(null, 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 = allocUnsafe(null, 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\nBuffer.byteLength = byteLength\n\nBuffer.prototype._isBuffer = true\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nmodule.exports.alloc = function (size) {\n var buffer = new Buffer(size)\n buffer.fill(0)\n return buffer\n}\n\nmodule.exports.from = function (data) {\n return new Buffer(data)\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 customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * 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 * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\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 // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\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(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(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 interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(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(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\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(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(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.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 buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.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 === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\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 (!Array.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 (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\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 (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && 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 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) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\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 coercion 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// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\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\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.toLocaleString = Buffer.prototype.toString\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 str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\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 (numberIsNaN(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 (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 var strLen = string.length\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 (numberIsNaN(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 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 } 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 case 'latin1':\n case 'binary':\n return asciiWrite(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)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 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 += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; 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 = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\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 =\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 =\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 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 =\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 =\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 =\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 this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\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 this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\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 (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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\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 value = +value\n offset = offset >>> 0\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 value = +value\n offset = offset >>> 0\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 (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\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('Index out of range')\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\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\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 (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 if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\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 : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\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 takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().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 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\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof input !== 'string') {\n\t\treturn ret;\n\t}\n\n\tinput = input.trim().replace(/^[?#&]/, '');\n\n\tif (!input) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of input.split('&')) {\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url, hash] = splitOnFirst(input, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url.split('?')[0] || '',\n\t\t\tquery: parse(extract(input), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(input.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(input.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, input.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(input.url);\n\tif (input.fragmentIdentifier) {\n\t\thash = `#${encode(input.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\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'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\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// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AnimationFrameAction extends AsyncAction {\n\n constructor(protected scheduler: AnimationFrameScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(\n () => scheduler.flush(null)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated renamed. Use {@link animationFrameScheduler}\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n\n protected static frameTimeFactor: number = 10;\n\n public frame: number = 0;\n public index: number = -1;\n\n constructor(SchedulerAction: typeof AsyncAction = VirtualAction as any,\n public maxFrames: number = Number.POSITIVE_INFINITY) {\n super(SchedulerAction, () => this.frame);\n }\n\n /**\n * Prompt the Scheduler to execute all of its queued actions, therefore\n * clearing its queue.\n * @return {void}\n */\n public flush(): void {\n\n const {actions, maxFrames} = this;\n let error: any, action: AsyncAction;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @nodoc\n */\nexport class VirtualAction extends AsyncAction {\n\n protected active: boolean = true;\n\n constructor(protected scheduler: VirtualTimeScheduler,\n protected work: (this: SchedulerAction, state?: T) => void,\n protected index: number = scheduler.index += 1) {\n super(scheduler, work);\n this.index = scheduler.index = index;\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (!this.id) {\n return super.schedule(state, delay);\n }\n this.active = false;\n // If an action is rescheduled, we save allocations by mutating its state,\n // pushing it to the end of the scheduler queue, and recycling the action.\n // But since the VirtualTimeScheduler is used for testing, VirtualActions\n // must be immutable so they can be inspected later.\n const action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n\n protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n this.delay = scheduler.frame + delay;\n const {actions} = scheduler;\n actions.push(this);\n (actions as Array>).sort(VirtualAction.sortActions);\n return true;\n }\n\n protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n return undefined;\n }\n\n protected _execute(state: T, delay: number): any {\n if (this.active === true) {\n return super._execute(state, delay);\n }\n }\n\n public static sortActions(a: VirtualAction, b: VirtualAction) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\n\n// tslint:disable:max-line-length\n/** @deprecated resultSelector is no longer supported, use a mapping function. */\nexport function bindCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: () => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\n\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\n\nexport function bindCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\n// tslint:enable:max-line-length\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well. If you want to defer that call,\n * you may use {@link asyncScheduler} just as before. This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * ### Convert jQuery's getJSON to an Observable API\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Receive an array of arguments passed to a callback\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (a, b, c) => {\n * console.log(a); // 5\n * console.log(b); // 'some string'\n * console.log(c); // {someProperty: 'someValue'}\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction().subscribe(values => {\n * console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n * });\n * ```\n *\n * ### Compare behaviour with and without async Scheduler\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n * cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * ### Use bindCallback on an object method\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n * @name bindCallback\n */\nexport function bindCallback(\n callbackFunc: Function,\n resultSelector?: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindCallback(callbackFunc, scheduler)(...args).pipe(\n map((args) => isArray(args) ? resultSelector(...args) : resultSelector(args)),\n );\n }\n }\n\n return function (this: any, ...args: any[]): Observable {\n const context = this;\n let subject: AsyncSubject;\n const params = {\n context,\n subject,\n callbackFunc,\n scheduler,\n };\n return new Observable(subscriber => {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n const state: DispatchState = {\n args, subscriber, params,\n };\n return scheduler.schedule>(dispatch, 0, state);\n }\n });\n };\n}\n\ninterface DispatchState {\n args: any[];\n subscriber: Subscriber;\n params: ParamsContext;\n}\n\ninterface ParamsContext {\n callbackFunc: Function;\n scheduler: SchedulerLike;\n context: any;\n subject: AsyncSubject;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const self = this;\n const { args, subscriber, params } = state;\n const { callbackFunc, context, scheduler } = params;\n let { subject } = params;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n subject.error(err);\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface NextState {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(this: SchedulerAction>, state: NextState) {\n const { value, subject } = state;\n subject.next(value);\n subject.complete();\n}\n\ninterface ErrorState {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(this: SchedulerAction>, state: ErrorState) {\n const { err, subject } = state;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function bindNodeCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any) => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable; /* tslint:enable:max-line-length */\n\nexport function bindNodeCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n * ### Read a file from the filesystem and get the data as an Observable\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Use on function calling callback with multiple arguments\n * ```ts\n * someFunction((err, a, b) => {\n * console.log(err); // null\n * console.log(a); // 5\n * console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n * console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * ### Use on function calling callback in regular style\n * ```ts\n * someFunction(a => {\n * console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n * value => {} // never gets called\n * err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n * @name bindNodeCallback\n */\nexport function bindNodeCallback(\n callbackFunc: Function,\n resultSelector: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindNodeCallback(callbackFunc, scheduler)(...args).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n }\n\n return function(this: any, ...args: any[]): Observable {\n const params: ParamsState = {\n subject: undefined,\n args,\n callbackFunc,\n scheduler,\n context: this,\n };\n return new Observable(subscriber => {\n const { context } = params;\n let { subject } = params;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n\n if (err) {\n subject.error(err);\n return;\n }\n\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n return scheduler.schedule>(dispatch, 0, { params, subscriber, context });\n }\n });\n };\n}\n\ninterface DispatchState {\n subscriber: Subscriber;\n context: any;\n params: ParamsState;\n}\n\ninterface ParamsState {\n callbackFunc: Function;\n args: any[];\n scheduler: SchedulerLike;\n subject: AsyncSubject;\n context: any;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const { params, subscriber, context } = state;\n const { callbackFunc, args, scheduler } = params;\n let subject = params.subject;\n\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n if (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n } else {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n }\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface DispatchNextArg {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(arg: DispatchNextArg) {\n const { value, subject } = arg;\n subject.next(value);\n subject.complete();\n}\n\ninterface DispatchErrorArg {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(arg: DispatchErrorArg) {\n const { err, subject } = arg;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservedValuesFromArray, ObservedValueOf, SubscribableOrPromise } from '../types';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { isObservable } from '../util/isObservable';\nimport { from } from './from';\n\n/* tslint:disable:max-line-length */\n\n// forkJoin(a$, b$, c$)\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: SubscribableOrPromise): Observable<[T]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>;\n\n// forkJoin([a$, b$, c$]);\n// TODO(benlesh): Uncomment for TS 3.0\n// export function forkJoin(sources: []): Observable;\nexport function forkJoin(sources: [ObservableInput]): Observable<[A]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput]): Observable<[A, B]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E, F]>;\nexport function forkJoin[]>(sources: A): Observable[]>;\n\n// forkJoin({})\nexport function forkJoin(sourcesObject: {}): Observable;\nexport function forkJoin(sourcesObject: T): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function forkJoin(...args: Array|Function>): Observable;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(...sources: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed observables to complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first observable,\n * second value is the last thing emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, resulting\n * objects will have the same keys as the dictionary passed, with their last values they've emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input observables, whenever any of\n * that observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input observable errors at some point, `forkJoin` will error as well and all other observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output observable is supposed to emit a result.\n *\n * ## Examples\n *\n * ### Use forkJoin with a dictionary of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000),\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * ### Use forkJoin with an array of observable inputs\n * ```ts\n * import { forkJoin, of } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000),\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(\n ...sources: any[]\n): Observable {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n // TODO(benlesh): isObservable check will not be necessary when deprecated path is removed.\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n\n // DEPRECATED PATHS BELOW HERE\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop() as Function;\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(\n map((args: any[]) => resultSelector(...args))\n );\n }\n\n return forkJoinInternal(sources, null);\n}\n\nfunction forkJoinInternal(sources: ObservableInput[], keys: string[] | null): Observable {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\n\nconst toString: Function = (() => Object.prototype.toString)();\n\nexport interface NodeStyleEventEmitter {\n addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n}\n\nexport interface JQueryStyleEventEmitter {\n on: (eventName: string, handler: Function) => void;\n off: (eventName: string, handler: Function) => void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;\n}\n\nexport type EventTargetLike = HasEventTargetAddRemove | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;\n\nexport type FromEventTarget = EventTargetLike | ArrayLike>;\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\n/* tslint:disable:max-line-length */\nexport function fromEvent(target: FromEventTarget, eventName: string): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, resultSelector: (...args: any[]) => T): Observable;\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n * @name fromEvent\n */\nexport function fromEvent(\n target: FromEventTarget,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: ((...args: any[]) => T)\n): Observable {\n\n if (isFunction(options)) {\n // DEPRECATED PATH\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEvent(target, eventName, options).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n function handler(e: T) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n } else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options as EventListenerOptions);\n });\n}\n\nfunction setupSubscription(sourceObj: FromEventTarget, eventName: string,\n handler: (...args: any[]) => void, subscriber: Subscriber,\n options?: EventListenerOptions) {\n let unsubscribe: () => void;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n } else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n } else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler as NodeEventHandler);\n unsubscribe = () => source.removeListener(eventName, handler as NodeEventHandler);\n } else if (sourceObj && (sourceObj as any).length) {\n for (let i = 0, len = (sourceObj as any).length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n } else {\n throw new TypeError('Invalid event target');\n }\n\n subscriber.add(unsubscribe);\n}\n\nfunction isNodeStyleEventEmitter(sourceObj: any): sourceObj is NodeStyleEventEmitter {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\n\nfunction isJQueryStyleEventEmitter(sourceObj: any): sourceObj is JQueryStyleEventEmitter {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\n\nfunction isEventTarget(sourceObj: any): sourceObj is HasEventTargetAddRemove {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { map } from '../operators/map';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void, resultSelector?: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * then one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Example\n * ### Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * ## Example\n * ### Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * ## Example\n * ### Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs \"EVENT_TYPE\" \"EVENT_MESSAGE\" to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + \" --- \" + eventMessage // without that function only \"EVENT_TYPE\"\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"EVENT_TYPE --- EVENT_MESSAGE\"\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T): Observable {\n\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEventPattern(addHandler, removeHandler).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n\n let retValue: any;\n try {\n retValue = addHandler(handler);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n\n return () => removeHandler(handler, retValue) ;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { identity } from '../util/identity';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\n\nexport type ConditionFunc = (state: S) => boolean;\nexport type IterateFunc = (state: S) => S;\nexport type ResultFunc = (state: S) => T;\n\ninterface SchedulerState {\n needIterate?: boolean;\n state: S;\n subscriber: Subscriber;\n condition?: ConditionFunc;\n iterate: IterateFunc;\n resultSelector: ResultFunc;\n}\n\nexport interface GenerateBaseOptions {\n /**\n * Initial state.\n */\n initialState: S;\n /**\n * Condition function that accepts state and returns boolean.\n * When it returns false, the generator stops.\n * If not specified, a generator never stops.\n */\n condition?: ConditionFunc;\n /**\n * Iterate function that accepts state and returns new state.\n */\n iterate: IterateFunc;\n /**\n * SchedulerLike to use for generation process.\n * By default, a generator starts immediately.\n */\n scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions extends GenerateBaseOptions {\n /**\n * Result selection function that accepts state and returns a value to emit.\n */\n resultSelector: ResultFunc;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate(0, x => x < 10, x => x + 1, x => x);\n *\n * @example Using asap scheduler, produces sequence of 2, 3, 5, then completes.\n * const res = generate(1, x => x < 5, x => x * 2, x => x + 1, asap);\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} on which to run the generator loop. If not provided, defaults to emit immediately.\n * @returns {Observable} The generated sequence.\n */\n export function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n resultSelector: ResultFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * Use it instead of nexting values in a for loop.\n *\n * \n *\n * `generate` allows you to create stream of values generated with a loop very similar to\n * traditional for loop. First argument of `generate` is a beginning value. Second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * loop continues, if not, it stops. Third value is a function which takes previously defined\n * value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in regular for loop: first expression\n * initializes some state (for example numeric index), second tests if loop can make next\n * iteration (for example if index is lower than 10) and third states how defined value\n * will be modified on every step (index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First, condition function is ran. If it returned true, Observable\n * emits currently stored value (initial value at the first iteration) and then updates\n * that value with iterate function. If at some point condition returned false, Observable\n * completes at that moment.\n *\n * Optionally you can pass fourth parameter to `generate` - a result selector function which allows you\n * to immediately map value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * single object to the operator instead. That object has properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, so output Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is resultSelector\n * function or not). In case of single-parameter call, you can provide it as a\n * `scheduler` property on object passed to the operator. In both cases scheduler decides when\n * next iteration of the loop will happen and therefore when next value will be emitted\n * by the Observable. For example to ensure that each value is pushed to the observer\n * on separate task in event loop, you could use `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * @example Use with condition and iterate functions.\n * const generated = generate(0, x => x < 3, x => x + 1);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Yo!\"\n *\n *\n * @example Use with condition, iterate and resultSelector functions.\n * const generated = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n *\n * @example Use with options object.\n * const generated = generate({\n * initialState: 0,\n * condition(value) { return value < 3; },\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n * @example Use options object without condition function.\n * const generated = generate({\n * initialState: 0,\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!') // This will never run.\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n *\n *\n * @see {@link from}\n * @see {@link index/Observable.create}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} [resultSelector] Selector function for results produced in the sequence.\n * @param {Scheduler} [scheduler] A {@link Scheduler} on which to run the generator loop. If not provided, defaults to emitting immediately.\n * @return {Observable} The generated sequence.\n */\nexport function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateBaseOptions} options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateBaseOptions): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * resultSelector: x => x,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateOptions} options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateOptions): Observable;\n\nexport function generate(initialStateOrOptions: S | GenerateOptions,\n condition?: ConditionFunc,\n iterate?: IterateFunc,\n resultSelectorOrObservable?: (ResultFunc) | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n\n let resultSelector: ResultFunc;\n let initialState: S;\n\n if (arguments.length == 1) {\n const options = initialStateOrOptions as GenerateOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity as ResultFunc;\n scheduler = options.scheduler;\n } else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions as S;\n resultSelector = identity as ResultFunc;\n scheduler = resultSelectorOrObservable as SchedulerLike;\n } else {\n initialState = initialStateOrOptions as S;\n resultSelector = resultSelectorOrObservable as ResultFunc;\n }\n\n return new Observable(subscriber => {\n let state = initialState;\n if (scheduler) {\n return scheduler.schedule>(dispatch, 0, {\n subscriber,\n iterate,\n condition,\n resultSelector,\n state\n });\n }\n\n do {\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n let value: T;\n try {\n value = resultSelector(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n\n return undefined;\n });\n}\n\nfunction dispatch(this: SchedulerAction>, state: SchedulerState) {\n const { subscriber, condition } = state;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } else {\n state.needIterate = true;\n }\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n let value: T;\n try {\n value = state.resultSelector(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nimport { SubscribableOrPromise } from '../types';\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * `If` statement for Observables.\n *\n * `iif` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * than controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `iif` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * ## Examples\n * ### Change at runtime which Observable will be subscribed\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n*/\nexport function iif(\n condition: () => boolean,\n trueResult: SubscribableOrPromise = EMPTY,\n falseResult: SubscribableOrPromise = EMPTY\n): Observable {\n return defer(() => condition() ? trueResult : falseResult);\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isNumeric } from '../util/isNumeric';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nexport function interval(period = 0,\n scheduler: SchedulerLike = async): Observable {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n subscriber.add(\n scheduler.schedule(dispatch, period, { subscriber, counter: 0, period })\n );\n return subscriber;\n });\n}\n\nfunction dispatch(this: SchedulerAction, state: IntervalState) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n\ninterface IntervalState {\n subscriber: Subscriber;\n counter: number;\n period: number;\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n * ### Emit the number 7, then never emit anything else (not even complete)\n * ```ts\n * import { NEVER } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * function info() {\n * console.log('Will not be called');\n * }\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe(x => console.log(x), info, info);\n *\n * ```\n *\n * @see {@link Observable}\n * @see {@link index/EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable(noop);\n\n/**\n * @deprecated Deprecated in favor of using {@link NEVER} constant.\n */\nexport function never () {\n return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(v: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNext(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNext(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link index/EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { onErrorResumeNext, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) throw Error();\n * return 10 / x;\n * })\n * ),\n * of(1, 2, 3),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('done'),\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext(...sources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n\n if (sources.length === 0) {\n return EMPTY;\n }\n\n const [ first, ...remainder ] = sources;\n\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext(...first);\n }\n\n return new Observable(subscriber => {\n const subNext = () => subscriber.add(\n onErrorResumeNext(...remainder).subscribe(subscriber)\n );\n\n return from(first).subscribe({\n next(value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * Turn entries of an object into a stream.\n *\n * \n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * @example Converts a javascript object to an Observable\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n * foo: 42,\n * bar: 56,\n * baz: 78\n * };\n *\n * pairs(obj)\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('the end!')\n * );\n *\n * // Logs:\n * // [\"foo\", 42],\n * // [\"bar\", 56],\n * // [\"baz\", 78],\n * // \"the end!\"\n * ```\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to schedule\n * when resulting Observable will emit values.\n * @returns {(Observable>)} An observable sequence of\n * [key, value] pairs from the object.\n */\nexport function pairs(obj: Object, scheduler?: SchedulerLike): Observable<[string, T]> {\n if (!scheduler) {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length && !subscriber.closed; i++) {\n const key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n } else {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n const subscription = new Subscription();\n subscription.add(\n scheduler.schedule<{ keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }>\n (dispatch, 0, { keys, index: 0, subscriber, subscription, obj }));\n return subscription;\n });\n }\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction,\n state: { keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }) {\n const { keys, index, subscriber, subscription, obj } = state;\n if (!subscriber.closed) {\n if (index < keys.length) {\n const key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys, index: index + 1, subscriber, subscription, obj }));\n } else {\n subscriber.complete();\n }\n }\n}\n","import { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition a set of numbers into odds and evens observables\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, (value, index) => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n */\nexport function partition(\n source: ObservableInput,\n predicate: (value: T, index: number) => boolean,\n thisArg?: any\n): [Observable, Observable] {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg) as any)(new Observable(subscribeTo(source)))\n ] as [Observable, Observable];\n}\n","import { SchedulerAction, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * Emits a sequence of numbers in a range.\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n * Emits the numbers 1 to 10\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 10);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link timer}\n * @see {@link index/interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} count The number of sequential integers to generate.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n * @static true\n * @name range\n * @owner Observable\n */\nexport function range(start: number = 0,\n count?: number,\n scheduler?: SchedulerLike): Observable {\n return new Observable(subscriber => {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n\n let index = 0;\n let current = start;\n\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index, count, start, subscriber\n });\n } else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n\n return undefined;\n });\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction, state: any) {\n const { start, index, count, subscriber } = state;\n\n if (index >= count) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(start);\n\n if (subscriber.closed) {\n return;\n }\n\n state.index = index + 1;\n state.start = start + 1;\n\n this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput } from '../types';\nimport { from } from './from'; // from from from! LAWL\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * Use it when you catch yourself cleaning up after an Observable.\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using(resourceFactory: () => Unsubscribable | void,\n observableFactory: (resource: Unsubscribable | void) => ObservableInput | void): Observable {\n return new Observable(subscriber => {\n let resource: Unsubscribable | void;\n\n try {\n resource = resourceFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n let result: ObservableInput | void;\n try {\n result = observableFactory(resource);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n const source = result ? from(result) : EMPTY;\n const subscription = source.subscribe(subscriber);\n return () => {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n *\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private value: T = null;\n private hasNext: boolean = false;\n private hasCompleted: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return super._subscribe(subscriber);\n }\n\n next(value: T): void {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n }\n\n error(error: any): void {\n if (!this.hasCompleted) {\n super.error(error);\n }\n }\n\n complete(): void {\n this.hasCompleted = true;\n if (this.hasNext) {\n super.next(this.value);\n }\n super.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { SubscriptionLike } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n if (subscription && !(subscription).closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n\n getValue(): T {\n if (this.hasError) {\n throw this.thrownError;\n } else if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return this._value;\n }\n }\n\n next(value: T): void {\n super.next(this._value = value);\n }\n}\n","import { PartialObserver } from './types';\nimport { Observable } from './Observable';\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { deprecate } from 'util';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: 'N' | 'E' | 'C', public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction, ...operations: OperatorFunction[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber(\n nextOrObserver?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { SchedulerLike } from './types';\nimport { queue } from './scheduler/queue';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * A variant of Subject that \"replays\" or emits old values to new subscribers.\n * It buffers a set number of values and will emit those values immediately to\n * any new subscribers in addition to emitting new values to existing subscribers.\n *\n * @class ReplaySubject\n */\nexport class ReplaySubject extends Subject {\n private _events: (ReplayEvent | T)[] = [];\n private _bufferSize: number;\n private _windowTime: number;\n private _infiniteTimeWindow: boolean = false;\n\n constructor(bufferSize: number = Number.POSITIVE_INFINITY,\n windowTime: number = Number.POSITIVE_INFINITY,\n private scheduler?: SchedulerLike) {\n super();\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n } else {\n this.next = this.nextTimeWindow;\n }\n }\n\n private nextInfiniteTimeWindow(value: T): void {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n // Since this method is invoked in every next() call than the buffer\n // can overgrow the max size only by one item\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n\n private nextTimeWindow(value: T): void {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n // When `_infiniteTimeWindow === true` then the buffer is already trimmed\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription: Subscription;\n\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n } else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next((>_events[i]).value);\n }\n }\n\n if (this.hasError) {\n subscriber.error(this.thrownError);\n } else if (this.isStopped) {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n _getNow(): number {\n return (this.scheduler || queue).now();\n }\n\n private _trimBufferThenGetEvents(): ReplayEvent[] {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = []>this._events;\n\n const eventsCount = _events.length;\n let spliceCount = 0;\n\n // Trim events that fall out of the time window.\n // Start at the front of the list. Break early once\n // we encounter an event that falls within the window.\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n\n return _events;\n }\n\n}\n\nclass ReplayEvent {\n constructor(public time: number, public value: T) {\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject\n */\nexport class Subject extends Observable implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver | Subscriber; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (this as any)._ctorUnsubscribe = true;\n (this as any)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = (this as any);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n // It's only possible to null _unsubscribe - to release the reference to\n // any teardown function passed in the constructor - if the property was\n // actually assigned in the constructor, as there are some classes that\n // are derived from Subscriber (which derives from Subscription) that\n // implement an _unsubscribe method as a mechanism for obtaining\n // unsubscription notifications and some of those subscribers are\n // recycled. Also, in some of those subscribers, _unsubscribe switches\n // from a prototype method to an instance property - see notifyNext in\n // RetryWhenSubscriber.\n if (_ctorUnsubscribe) {\n (this as any)._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/** @prettier */\nimport { Subscription } from './Subscription';\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\n\ninterface SimpleOuterSubscriberLike {\n /**\n * A handler for inner next notifications from the inner subscription\n * @param innerValue the value nexted by the inner producer\n */\n notifyNext(innerValue: T): void;\n /**\n * A handler for inner error notifications from the inner subscription\n * @param err the error from the inner producer\n */\n notifyError(err: any): void;\n /**\n * A handler for inner complete notifications from the inner subscription.\n */\n notifyComplete(): void;\n}\n\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(private parent: SimpleOuterSubscriberLike) {\n super();\n }\n\n protected _next(value: T): void {\n this.parent.notifyNext(value);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\n\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(private parent: ComplexOuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n\nexport class SimpleOuterSubscriber extends Subscriber implements SimpleOuterSubscriberLike {\n notifyNext(innerValue: R): void {\n this.destination.next(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error(err);\n }\n\n notifyComplete(): void {\n this.destination.complete();\n }\n}\n\n/**\n * DO NOT USE (formerly \"OuterSubscriber\")\n * TODO: We want to refactor this and remove it. It is retaining values it shouldn't for long\n * periods of time.\n */\nexport class ComplexOuterSubscriber extends Subscriber {\n /**\n * @param _outerValue Used by: bufferToggle, delayWhen, windowToggle\n * @param innerValue Used by: subclass default, combineLatest, race, bufferToggle, windowToggle, withLatestFrom\n * @param _outerIndex Used by: combineLatest, race, withLatestFrom\n * @param _innerSub Used by: delayWhen\n */\n notifyNext(_outerValue: T, innerValue: R, _outerIndex: number, _innerSub: ComplexInnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any): void {\n this.destination.error(error);\n }\n\n /**\n * @param _innerSub Used by: race, bufferToggle, delayWhen, windowToggle, windowWhen\n */\n notifyComplete(_innerSub: ComplexInnerSubscriber): void {\n this.destination.complete();\n }\n}\n\nexport function innerSubscribe(result: any, innerSubscriber: Subscriber): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription: Subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber) as Subscription;\n } catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { Subject, SubjectSubscriber } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic } from '../types';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n\n/**\n * @class ConnectableObservable\n */\nexport class ConnectableObservable extends Observable {\n\n protected _subject: Subject;\n protected _refCount: number = 0;\n protected _connection: Subscription;\n /** @internal */\n _isComplete = false;\n\n constructor(public source: Observable,\n protected subjectFactory: () => Subject) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n\nexport const connectableObservableDescriptor: PropertyDescriptorMap = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null as null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null as null, writable: true },\n _connection: { value: null as null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\n\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination: Subject,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n protected _error(err: any): void {\n this._unsubscribe();\n super._error(err);\n }\n protected _complete(): void {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n protected _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // ).subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Operator } from '../Operator';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\n\nconst NONE = {};\n\n/* tslint:disable:max-line-length */\n\n// If called with a single array, it \"auto-spreads\" the array, with result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: [O1], resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(sources: [O1, O2], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(sources: [O1, O2, O3], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(sources: [O1, O2, O3, O4], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5, O6], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: O[], resultSelector: (...args: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n// standard call, but with a result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n\n// With a scheduler (deprecated)\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: [O1], scheduler: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: O[], scheduler: SchedulerLike): Observable[]>;\n\n// Best case\nexport function combineLatest>(sources: [O1]): Observable<[ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2]): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest>(sources: O[]): Observable[]>;\n\n// Standard calls\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(v1: O1, scheduler?: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(...observables: O[]): Observable;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, R>(...observables: Array | ((...values: Array) => R)>): Observable;\n\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(...observables: Array): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, R>(...observables: Array[]) => R) | SchedulerLike>): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest(...observables: Array | ((...values: Array) => R) | SchedulerLike>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n * ## Examples\n * ### Combine two timer Observables\n * ```ts\n * import { combineLatest, timer } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * ### Combine an array of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, starWith } from 'rxjs/operators';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0),\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n *\n * ### Use project function to dynamically calculate the Body-Mass Index\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest(weight, height).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(\n ...observables: (O | ((...values: ObservedValueOf[]) => R) | SchedulerLike)[]\n): Observable {\n let resultSelector: ((...values: Array) => R) | undefined = undefined;\n let scheduler: SchedulerLike|undefined = undefined;\n\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop() as SchedulerLike;\n }\n\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop() as (...values: Array) => R;\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], resultSelector)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as any;\n }\n\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\n\nexport class CombineLatestOperator implements Operator {\n constructor(private resultSelector?: (...values: Array) => R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class CombineLatestSubscriber extends OuterSubscriber {\n private active: number = 0;\n private values: any[] = [];\n private observables: any[] = [];\n private toRespond?: number;\n\n constructor(destination: Subscriber, private resultSelector?: (...values: Array) => R) {\n super(destination);\n }\n\n protected _next(observable: any) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete!();\n } else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n\n notifyComplete(unused: Subscriber): void {\n if ((this.active -= 1) === 0) {\n this.destination.complete!();\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n } else {\n this.destination.next!(values.slice());\n }\n }\n }\n\n private _tryResultSelector(values: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, values);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(v1: O1, scheduler: SchedulerLike): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n\nexport function concat>(v1: O1): Observable>;\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2): Observable | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat>(...observables: O[]): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(...observables: (O | SchedulerLike)[]): Observable>;\nexport function concat(...observables: ObservableInput[]): Observable;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat(...observables: (ObservableInput | SchedulerLike)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {SchedulerLike} [scheduler=null] An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat, R>(...observables: Array): Observable | R> {\n return concatAll()(of(...observables));\n}\n","import { Observable } from '../Observable';\nimport { SubscribableOrPromise, ObservedValueOf, ObservableInput } from '../types';\nimport { from } from './from'; // lol\nimport { empty } from './empty';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nexport function defer | void>(observableFactory: () => R): Observable> {\n return new Observable>(subscriber => {\n let input: R | void;\n try {\n input = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input as ObservableInput>) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferrable to use this over `empty()`.\n */\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then complete\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Deprecated in favor of using {@link EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\n\nexport function from>(input: O): Observable>;\n/** @deprecated use {@link scheduled} instead. */\nexport function from>(input: O, scheduler: SchedulerLike): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n * @name from\n * @owner Observable\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\nexport function fromArray(input: ArrayLike, scheduler?: SchedulerLike) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n } else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike} from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n\nexport function merge(v1: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge(...observables: Array | SchedulerLike | number>): Observable {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler: SchedulerLike = null;\n let last: any = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n } else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return >observables[0];\n }\n\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { Observable } from '../Observable';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):\n Observable;\nexport function of(...args: (T | SchedulerLike)[]): Observable;\n\n// TODO(benlesh): Update the typings for this when we can switch to TS 3.x\nexport function of(a: T): Observable;\nexport function of(a: T, b: T2): Observable;\nexport function of(a: T, b: T2, c: T3): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9):\n Observable;\nexport function of(...args: T[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: 10'\n * // 'next: 20'\n * // 'next: 30'\n *\n * ```\n *\n * Emit the array `[1,2,3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1,2,3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: [1,2,3]'\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n * @method of\n * @owner Observable\n */\n\nexport function of(...args: Array): Observable {\n let scheduler = args[args.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args as T[], scheduler);\n } else {\n return fromArray(args as T[]);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic, ObservableInput } from '../types';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n\n// tslint:disable:max-line-length\nexport function race(arg: [ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: ObservableInput[]): Observable;\nexport function race(arg: ObservableInput[]): Observable<{}>;\n\nexport function race(a: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput, e: ObservableInput): Observable;\n// tslint:enable:max-line-length\n\nexport function race(observables: ObservableInput[]): Observable;\nexport function race(observables: ObservableInput[]): Observable<{}>;\nexport function race(...observables: ObservableInput[]): Observable;\nexport function race(...observables: ObservableInput[]): Observable<{}>;\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item.\n *\n * ## Example\n * ### Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { race, interval } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * race(obs3, obs1, obs2)\n * .subscribe(\n * winner => console.log(winner)\n * );\n *\n * // result:\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n * @static true\n * @name race\n * @owner Observable\n */\nexport function race(...observables: ObservableInput[]): Observable {\n // if the only argument is an array, it was most likely called with\n // `race([obs1, obs2, ...])`\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0] as Observable[];\n } else {\n return observables[0] as Observable;\n }\n }\n\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\n\nexport class RaceOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class RaceSubscriber extends OuterSubscriber {\n private hasFirst: boolean = false;\n private observables: Observable[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(observable: any): void {\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n\n if (len === 0) {\n this.destination.complete!();\n } else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i)!;\n\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null!;\n }\n }\n\n notifyNext(_outerValue: T, innerValue: T,\n outerIndex: number): void {\n if (!this.hasFirst) {\n this.hasFirst = true;\n\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n\n this.subscriptions = null!;\n }\n\n this.destination.next!(innerValue);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * Just emits 'error', and nothing else.\n * \n *\n * ![](throw.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then emit an error\n * ```ts\n * import { throwError, concat, of } from 'rxjs';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // 7\n * // Error: oops!\n * ```\n *\n * ---\n *\n * ### Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 2\n * ```ts\n * import { throwError, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n * mergeMap(x => x === 2\n * ? throwError('Twos are bad')\n * : of('a', 'b', 'c')\n * ),\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // a\n * // b\n * // c\n * // a\n * // b\n * // c\n * // Twos are bad\n * ```\n *\n * @see {@link Observable}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throwError\n * @owner Observable\n */\nexport function throwError(error: any, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n } else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\n\ninterface DispatchArg {\n error: any;\n subscriber: Subscriber;\n}\n\nfunction dispatch({ error, subscriber }: DispatchArg) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that starts emitting after an `dueTime` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * Its like {@link index/interval}, but you can specify when\n * should the emissions start.\n *\n * ![](timer.png)\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `dueTime`. The initial delay may be a `Date`. By default, this\n * operator uses the {@link asyncScheduler} {@link SchedulerLike} to provide a notion of time, but you\n * may pass any {@link SchedulerLike} to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * ## Examples\n * ### Emits ascending numbers, one every second (1000ms), starting after 3 seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n * ```\n *\n * ### Emits one number after five seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(5000);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link index/interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time specified as a Date object or as an integer denoting\n * milliseconds to wait before emitting the first value of 0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `dueTime` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nexport function timer(dueTime: number | Date = 0,\n periodOrScheduler?: number | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n } else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler as any;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? (dueTime as number)\n : (+dueTime - scheduler.now());\n\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\n\ninterface TimerState {\n index: number;\n period: number;\n subscriber: Subscriber;\n}\n\nfunction dispatch(this: SchedulerAction, state: TimerState) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { Observable } from '../Observable';\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Operator } from '../Operator';\nimport { ObservableInput, PartialObserver, ObservedValueOf } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): Observable;\n\nexport function zip, O2 extends ObservableInput>(v1: O1, v2: O2): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\nexport function zip>(array: O[]): Observable[]>;\nexport function zip(array: ObservableInput[]): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip(array: ObservableInput[], resultSelector: (...values: any[]) => R): Observable;\n\nexport function zip>(...observables: O[]): Observable[]>;\nexport function zip, R>(...observables: Array[]) => R)>): Observable;\nexport function zip(...observables: Array | ((...values: Array) => R)>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n * Combine age and name from different sources\n * ```ts\n * import { zip, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * let age$ = of(27, 25, 29);\n * let name$ = of('Foo', 'Bar', 'Beer');\n * let isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev })),\n * )\n * .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n * @param observables\n * @return {Observable}\n * @static true\n * @name zip\n * @owner Observable\n */\nexport function zip, R>(\n ...observables: Array[]) => R)>\n): Observable[]|R> {\n const resultSelector = <((...ys: Array) => R)> observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\n\nexport class ZipOperator implements Operator {\n\n resultSelector?: (...values: Array) => R;\n\n constructor(resultSelector?: (...values: Array) => R) {\n this.resultSelector = resultSelector;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ZipSubscriber extends Subscriber {\n private iterators: LookAheadIterator[] = [];\n private active = 0;\n\n constructor(destination: Subscriber,\n private resultSelector?: (...values: Array) => R,\n values: any = Object.create(null)) {\n super(destination);\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n\n protected _next(value: any) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n } else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n } else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n\n protected _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n\n this.unsubscribe();\n\n if (len === 0) {\n this.destination.complete!();\n return;\n }\n\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator: ZipBufferIterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination as Subscription;\n destination.add(iterator.subscribe());\n } else {\n this.active--; // not an observable\n }\n }\n }\n\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete!();\n }\n }\n\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n\n // abort if not all of them have values\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n\n let shouldComplete = false;\n const args: any[] = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n\n // check to see if it's completed now that you've gotten\n // the next value.\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n\n if (result.done) {\n destination.complete!();\n return;\n }\n\n args.push(result.value);\n }\n\n if (this.resultSelector) {\n this._tryresultSelector(args);\n } else {\n destination.next!(args);\n }\n\n if (shouldComplete) {\n destination.complete!();\n }\n }\n\n protected _tryresultSelector(args: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n\ninterface LookAheadIterator extends Iterator {\n hasValue(): boolean;\n hasCompleted(): boolean;\n}\n\nclass StaticIterator implements LookAheadIterator {\n private nextResult: IteratorResult;\n\n constructor(private iterator: Iterator) {\n this.nextResult = iterator.next();\n }\n\n hasValue() {\n return true;\n }\n\n next(): IteratorResult {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n\n hasCompleted(): boolean {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\n\nclass StaticArrayIterator implements LookAheadIterator {\n private index = 0;\n private length = 0;\n\n constructor(private array: T[]) {\n this.length = array.length;\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n next(value?: any): IteratorResult {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n\n hasValue() {\n return this.array.length > this.index;\n }\n\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ZipBufferIterator extends SimpleOuterSubscriber implements LookAheadIterator {\n stillUnsubscribed = true;\n buffer: T[] = [];\n isComplete = false;\n\n constructor(destination: PartialObserver,\n private parent: ZipSubscriber,\n private observable: Observable) {\n super(destination);\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n // this is legit because `next()` will never be called by a subscription in this case.\n next(): IteratorResult {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n } else {\n return { value: buffer.shift()!, done: false };\n }\n }\n\n hasValue() {\n return this.buffer.length > 0;\n }\n\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n } else {\n this.destination.complete!();\n }\n }\n\n notifyNext(innerValue: any): void {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function concatAll(): OperatorFunction, T>;\nexport function concatAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.png)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll(): OperatorFunction, T> {\n return mergeAll(1);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function filter(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction {\n return function filterOperatorFunction(source: Observable): Observable {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber extends Subscriber {\n\n count: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function groupBy(keySelector: (value: T) => K): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the keySelector function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Elsewhere, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the key field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the elementSelector function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], []))),\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, p => p.name),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable): Observable} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector: (value: T) => K,\n elementSelector?: ((value: T) => R) | void,\n durationSelector?: (grouped: GroupedObservable) => Observable,\n subjectSelector?: () => Subject): OperatorFunction> {\n return (source: Observable) =>\n source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n}\n\nexport interface RefCountSubscription {\n count: number;\n unsubscribe: () => void;\n closed: boolean;\n attemptedToUnsubscribe: boolean;\n}\n\nclass GroupByOperator implements Operator> {\n constructor(private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new GroupBySubscriber(\n subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupBySubscriber extends Subscriber implements RefCountSubscription {\n private groups: Map> = null;\n public attemptedToUnsubscribe: boolean = false;\n public count: number = 0;\n\n constructor(destination: Subscriber>,\n private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n super(destination);\n }\n\n protected _next(value: T): void {\n let key: K;\n try {\n key = this.keySelector(value);\n } catch (err) {\n this.error(err);\n return;\n }\n\n this._group(value, key);\n }\n\n private _group(value: T, key: K) {\n let groups = this.groups;\n\n if (!groups) {\n groups = this.groups = new Map>();\n }\n\n let group = groups.get(key);\n\n let element: R;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n } catch (err) {\n this.error(err);\n }\n } else {\n element = value;\n }\n\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject()) as Subject;\n groups.set(key, group);\n const groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n let duration: any;\n try {\n duration = this.durationSelector(new GroupedObservable(key, >group));\n } catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n\n if (!group.closed) {\n group.next(element);\n }\n }\n\n protected _error(err: any): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.error(err);\n });\n\n groups.clear();\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.complete();\n });\n\n groups.clear();\n }\n this.destination.complete();\n }\n\n removeGroup(key: K): void {\n this.groups.delete(key);\n }\n\n unsubscribe() {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n super.unsubscribe();\n }\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupDurationSubscriber extends Subscriber {\n constructor(private key: K,\n private group: Subject,\n private parent: GroupBySubscriber) {\n super(group);\n }\n\n protected _next(value: T): void {\n this.complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { parent, key } = this;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n }\n}\n\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable\n */\nexport class GroupedObservable extends Observable {\n /** @deprecated Do not construct this type. Internal use only */\n constructor(public key: K,\n private groupSubject: Subject,\n private refCountSubscription?: RefCountSubscription) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const subscription = new Subscription();\n const { refCountSubscription, groupSubject } = this;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass InnerRefCountSubscription extends Subscription {\n constructor(private parent: RefCountSubscription) {\n super();\n parent.count++;\n }\n\n unsubscribe() {\n const parent = this.parent;\n if (!parent.closed && !this.closed) {\n super.unsubscribe();\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return function mapOperation(source: Observable): Observable {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator implements Operator {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber extends Subscriber {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: R;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction, T> {\n return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(project: (value: T, index: number) => O, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: undefined, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and merging the results of the Observables\n * obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n mergeMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: number) => resultSelector(a, b, i, ii)),\n ), concurrent)\n );\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source: Observable) => source.lift(new MergeMapOperator(project, concurrent));\n}\n\nexport class MergeMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n\n private _innerSub(ish: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift()!);\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * @deprecated renamed. Use {@link mergeMap}\n */\nexport const flatMap = mergeMap;","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n * Ensure values in subscribe are called just before browser repaint.\n * ```ts\n * import { interval } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function observeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber extends Subscriber {\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber,\n private scheduler: SchedulerLike,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification): void {\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification,\n public destination: PartialObserver) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Observable } from '../Observable';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the *publish* operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { tap, publish, refCount } from 'rxjs/operators';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n * tap((num) => console.log(`refCount ${num}`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap((num) => console.log(`publish ${num}`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the publish operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return function refCountOperatorFunction(source: ConnectableObservable): Observable {\n return source.lift(new RefCountOperator(source));\n } as MonoTypeOperatorFunction;\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { ObservableInput, SchedulerLike, Observable } from 'rxjs';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see from\n * @see of\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { InteropObservable, SchedulerLike, Subscribable } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable: Subscribable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(\n value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n },\n err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n }\n )));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator: Iterator;\n sub.add(() => {\n // Finalize generators\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value: T;\n let done: boolean;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated renamed. Use {@link asyncScheduler}\n */\nexport const async = asyncScheduler;","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated renamed. Use {@link queueScheduler}\n */\nexport const queue = queueScheduler;\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n\n/**\n * @deprecated use {@link iterator} instead\n */\nexport const $$iterator = iterator;\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","export interface ArgumentOutOfRangeError extends Error {\n}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n new(): ArgumentOutOfRangeError;\n}\n\nconst ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl(this: any) {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n\n return ArgumentOutOfRangeErrorImpl;\n})();\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = ArgumentOutOfRangeErrorImpl as any;","export interface EmptyError extends Error {\n}\n\nexport interface EmptyErrorCtor {\n new(): EmptyError;\n}\n\nconst EmptyErrorImpl = (() => {\n function EmptyErrorImpl(this: any) {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n\n return EmptyErrorImpl;\n})();\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = EmptyErrorImpl as any;","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","export interface TimeoutError extends Error {\n}\n\nexport interface TimeoutErrorCtor {\n new(): TimeoutError;\n}\n\nconst TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl(this: any) {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n\n return TimeoutErrorImpl;\n})();\n\n/**\n * An error thrown when duetime elapses.\n *\n * @see {@link operators/timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = TimeoutErrorImpl as any;\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber | Subject): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","export function identity(x: T): T {\n return x;\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","import { isArray } from './isArray';\n\nexport function isNumeric(val: any): val is number | string {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return !!value && typeof (value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { SchedulerLike } from '../types';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && typeof (value).schedule === 'function';\n}\n","export function not(pred: Function, thisArg: any): Function {\n function notPred(): any {\n return !(( notPred).pred.apply(( notPred).thisArg, arguments));\n }\n ( notPred).pred = pred;\n ( notPred).thisArg = thisArg;\n return notPred;\n}","import { noop } from './noop';\nimport { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe(): UnaryFunction;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction, ...fns: UnaryFunction[]): UnaryFunction;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n","import { ObservableInput } from '../types';\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Subscription } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\nexport const subscribeTo = (result: ObservableInput): (subscriber: Subscriber) => Subscription | void => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result as any);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result as Promise);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result as any);\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nexport const subscribeToObservable = (obj: any) => (subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { hostReportError } from './hostReportError';\n\nexport const subscribeToPromise = (promise: PromiseLike) => (subscriber: Subscriber) => {\n promise.then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, hostReportError);\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport const subscribeToIterable = (iterable: Iterable) => (subscriber: Subscriber) => {\n const iterator = (iterable as any)[Symbol_iterator]();\n\n do {\n let item: IteratorResult;\n try {\n item = iterator.next();\n } catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n // Finalize the iterator if it happens to be a Generator\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\nexport const subscribeToArray = (array: ArrayLike) => (subscriber: Subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index = 0;\n\n constructor(private parent: OuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Subscriber } from '../Subscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue: undefined,\n outerIndex: undefined,\n innerSubscriber: InnerSubscriber\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number,\n innerSubscriber: Subscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)\n): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.png)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { audit } from 'rxjs/operators'\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return function auditOperatorFunction(source: Observable) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\n\nclass AuditOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass AuditSubscriber extends SimpleOuterSubscriber {\n\n private value?: T;\n private hasValue: boolean = false;\n private throttled?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n } catch (err) {\n return this.destination.error!(err);\n }\n const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n } else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = undefined;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = undefined;\n this.hasValue = false;\n this.destination.next!(value);\n }\n }\n\n notifyNext(): void {\n this.clearThrottle();\n }\n\n notifyComplete(): void {\n this.clearThrottle();\n }\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { auditTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * Collects values from the past as an array, and emits\n * that array only when another Observable emits.\n *\n * ![](buffer.png)\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * ## Example\n *\n * On every click, emit array of most recent interval events\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { buffer } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const intervalEvents = interval(1000);\n * const buffered = intervalEvents.pipe(buffer(clicks));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return {Observable} An Observable of buffers, which are arrays of\n * values.\n * @method buffer\n * @owner Observable\n */\nexport function buffer(closingNotifier: Observable): OperatorFunction {\n return function bufferOperatorFunction(source: Observable) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\n\nclass BufferOperator implements Operator {\n\n constructor(private closingNotifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSubscriber extends SimpleOuterSubscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, closingNotifier: Observable) {\n super(destination);\n this.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n }\n\n protected _next(value: T) {\n this.buffer.push(value);\n }\n\n notifyNext(): void {\n const buffer = this.buffer;\n this.buffer = [];\n this.destination.next!(buffer);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.\n *\n * ![](bufferCount.png)\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return {Observable} An Observable of arrays of buffered values.\n * @method bufferCount\n * @owner Observable\n */\nexport function bufferCount(bufferSize: number, startBufferEvery: number = null): OperatorFunction {\n return function bufferCountOperatorFunction(source: Observable) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\n\nclass BufferCountOperator implements Operator {\n private subscriberClass: any;\n\n constructor(private bufferSize: number, private startBufferEvery: number) {\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n } else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferCountSubscriber extends Subscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, private bufferSize: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const buffer = this.buffer;\n\n buffer.push(value);\n\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n }\n\n protected _complete(): void {\n const buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n super._complete();\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSkipCountSubscriber extends Subscriber {\n private buffers: Array = [];\n private count: number = 0;\n\n constructor(destination: Subscriber, private bufferSize: number, private startBufferEvery: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const { bufferSize, startBufferEvery, buffers, count } = this;\n\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n\n for (let i = buffers.length; i--; ) {\n const buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n }\n\n protected _complete(): void {\n const { buffers, destination } = this;\n\n while (buffers.length > 0) {\n let buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n super._complete();\n }\n\n}\n","import { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerAction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function bufferTime(bufferTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, maxBufferSize: number, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * Collects values from the past as an array, and emits\n * those arrays periodically in time.\n *\n * ![](bufferTime.png)\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * ## Examples\n *\n * Every second, emit an array of the recent click events\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(1000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds, emit the click events from the next 2 seconds\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(2000, 5000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferTime\n * @owner Observable\n */\nexport function bufferTime(bufferTimeSpan: number): OperatorFunction {\n let length: number = arguments.length;\n\n let scheduler: SchedulerLike = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n\n let bufferCreationInterval: number = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n\n let maxBufferSize: number = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n\n return function bufferTimeOperatorFunction(source: Observable) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\n\nclass BufferTimeOperator implements Operator {\n constructor(private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferTimeSubscriber(\n subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler\n ));\n }\n}\n\nclass Context {\n buffer: T[] = [];\n closeAction: Subscription;\n}\n\ninterface DispatchCreateArg {\n bufferTimeSpan: number;\n bufferCreationInterval: number;\n subscriber: BufferTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface DispatchCloseArg {\n subscriber: BufferTimeSubscriber;\n context: Context;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferTimeSubscriber extends Subscriber {\n private contexts: Array> = [];\n private timespanOnly: boolean;\n\n constructor(destination: Subscriber,\n private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n const context = this.openContext();\n this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (this.timespanOnly) {\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n } else {\n const closeState = { subscriber: this, context };\n const creationState: DispatchCreateArg = { bufferTimeSpan, bufferCreationInterval, subscriber: this, scheduler };\n this.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n }\n\n protected _next(value: T) {\n const contexts = this.contexts;\n const len = contexts.length;\n let filledBufferContext: Context;\n for (let i = 0; i < len; i++) {\n const context = contexts[i];\n const buffer = context.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context;\n }\n }\n\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n }\n\n protected _error(err: any) {\n this.contexts.length = 0;\n super._error(err);\n }\n\n protected _complete() {\n const { contexts, destination } = this;\n while (contexts.length > 0) {\n const context = contexts.shift();\n destination.next(context.buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.contexts = null;\n }\n\n protected onBufferFull(context: Context) {\n this.closeContext(context);\n const closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n const bufferTimeSpan = this.bufferTimeSpan;\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n }\n\n openContext(): Context {\n const context: Context = new Context();\n this.contexts.push(context);\n return context;\n }\n\n closeContext(context: Context) {\n this.destination.next(context.buffer);\n const contexts = this.contexts;\n\n const spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n }\n}\n\nfunction dispatchBufferTimeSpanOnly(this: SchedulerAction, state: any) {\n const subscriber: BufferTimeSubscriber = state.subscriber;\n\n const prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\n\nfunction dispatchBufferCreation(this: SchedulerAction>, state: DispatchCreateArg) {\n const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state;\n const context = subscriber.openContext();\n const action = >>this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, { subscriber, context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\n\nfunction dispatchBufferClose(arg: DispatchCloseArg) {\n const { subscriber, context } = arg;\n subscriber.closeContext(context);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OperatorFunction, SubscribableOrPromise } from '../types';\n\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.\n *\n * ![](bufferToggle.png)\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { bufferToggle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const buffered = clicks.pipe(bufferToggle(openings, i =>\n * i % 2 ? interval(500) : EMPTY\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param {SubscribableOrPromise} openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferToggle\n * @owner Observable\n */\nexport function bufferToggle(\n openings: SubscribableOrPromise,\n closingSelector: (value: O) => SubscribableOrPromise\n): OperatorFunction {\n return function bufferToggleOperatorFunction(source: Observable) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\n\nclass BufferToggleOperator implements Operator {\n\n constructor(private openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n }\n}\n\ninterface BufferContext {\n buffer: T[];\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferToggleSubscriber extends OuterSubscriber {\n private contexts: Array> = [];\n\n constructor(destination: Subscriber,\n openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise | void) {\n super(destination);\n this.add(subscribeToResult(this, openings));\n }\n\n protected _next(value: T): void {\n const contexts = this.contexts;\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n }\n\n protected _error(err: any): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._error(err);\n }\n\n protected _complete(): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n this.destination.next!(context.buffer);\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._complete();\n }\n\n notifyNext(outerValue: any, innerValue: O): void {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.closeBuffer(( innerSub).context);\n }\n\n private openBuffer(value: O): void {\n try {\n const closingSelector = this.closingSelector;\n const closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n } catch (err) {\n this._error(err);\n }\n }\n\n private closeBuffer(context: BufferContext): void {\n const contexts = this.contexts;\n\n if (contexts && context) {\n const { buffer, subscription } = context;\n this.destination.next!(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n }\n\n private trySubscribe(closingNotifier: any): void {\n const contexts = this.contexts;\n\n const buffer: Array = [];\n const subscription = new Subscription();\n const context = { buffer, subscription };\n contexts.push(context);\n\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n } else {\n (innerSubscription as any).context = context;\n\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.\n *\n * ![](bufferWhen.png)\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * ## Example\n *\n * Emit an array of the last clicks every [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { bufferWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferWhen(() =>\n * interval(1000 + Math.random() * 4000)\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferWhen\n * @owner Observable\n */\nexport function bufferWhen(closingSelector: () => Observable): OperatorFunction {\n return function (source: Observable) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\n\nclass BufferWhenOperator implements Operator {\n\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferWhenSubscriber extends SimpleOuterSubscriber {\n private buffer?: T[];\n private subscribing: boolean = false;\n private closingSubscription?: Subscription;\n\n constructor(destination: Subscriber, private closingSelector: () => Observable) {\n super(destination);\n this.openBuffer();\n }\n\n protected _next(value: T) {\n this.buffer!.push(value);\n }\n\n protected _complete() {\n const buffer = this.buffer;\n if (buffer) {\n this.destination.next!(buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.buffer = undefined;\n this.subscribing = false;\n }\n\n notifyNext(): void {\n this.openBuffer();\n }\n\n notifyComplete(): void {\n if (this.subscribing) {\n this.complete();\n } else {\n this.openBuffer();\n }\n }\n\n openBuffer() {\n let { closingSubscription } = this;\n\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n\n const buffer = this.buffer;\n if (this.buffer) {\n this.destination.next!(buffer);\n }\n\n this.buffer = [];\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n this.subscribing = false;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(selector: (err: any, caught: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * ![](catch.png)\n *\n * ## Examples\n * Continues with a different Observable when there's an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V')),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError, take } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throws a new error when the source Observable throws an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * }),\n * )\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return function catchErrorOperatorFunction(source: Observable): Observable> {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught as Observable);\n };\n}\n\nclass CatchOperator implements Operator {\n caught: Observable;\n\n constructor(private selector: (err: any, caught: Observable) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination: Subscriber,\n private selector: (err: any, caught: Observable) => ObservableInput,\n private caught: Observable) {\n super(destination);\n }\n\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n error(err: any) {\n if (!this.isStopped) {\n let result: any;\n try {\n result = this.selector(err, this.caught);\n } catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { CombineLatestOperator } from '../observable/combineLatest';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function combineAll(): OperatorFunction, T[]>;\nexport function combineAll(): OperatorFunction;\nexport function combineAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function combineAll(project: (...values: Array) => R): OperatorFunction;\n/**\n * Flattens an Observable-of-Observables by applying {@link combineLatest} when the Observable-of-Observables completes.\n *\n * ![](combineAll.png)\n *\n * `combineAll` takes an Observable of Observables, and collects all Observables from it. Once the outer Observable completes,\n * it subscribes to all collected Observables and combines their values using the {@link combineLatest} strategy, such that:\n *\n * * Every time an inner Observable emits, the output Observable emits\n * * When the returned observable emits, it emits all of the latest values by:\n * * If a `project` function is provided, it is called with each recent value from each inner Observable in whatever order they\n * arrived, and the result of the `project` function is what is emitted by the output Observable.\n * * If there is no `project` function, an array of all the most recent values is emitted by the output Observable.\n *\n * ---\n *\n * ## Examples\n *\n * ### Map two click events to a finite interval Observable, then apply `combineAll`\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, combineAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev =>\n * interval(Math.random() * 2000).pipe(take(3))\n * ),\n * take(2)\n * );\n * const result = higherOrder.pipe(\n * combineAll()\n * );\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link mergeAll}\n *\n * @param {function(...values: Array)} An optional function to map the most recent values from each inner Observable into a new result.\n * Takes each of the most recent values from each collected inner Observable as arguments, in order.\n * @return {Observable}\n * @name combineAll\n */\nexport function combineAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new CombineLatestOperator(project));\n}\n","\nimport { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\nconst none = {};\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[]): OperatorFunction>;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[], project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link combineLatest}.\n */\nexport function combineLatest(...observables: Array |\n Array> |\n ((...values: Array) => R)>): OperatorFunction {\n let project: (...values: Array) => R = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = <(...values: Array) => R>observables.pop();\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = (observables[0]).slice();\n }\n\n return (source: Observable) => source.lift.call(from([source, ...observables]), new CombineLatestOperator(project));\n}\n","import { concat as concatStatic } from '../observable/concat';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link concat}.\n */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction {\n return (source: Observable) => source.lift.call(concatStatic(source, ...observables));\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return mergeMap(project, resultSelector, 1);\n}\n","import { concatMap } from './concatMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMapTo>(observable: O): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](concatMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMapTo, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMapTo(interval(1000).pipe(take(4))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An observable of values merged together by joining the\n * passed observable with itself, one after the other, for each value emitted\n * from the source.\n * @method concatMapTo\n * @owner Observable\n */\nexport function concatMapTo>(\n innerObservable: O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return concatMap(() => innerObservable, resultSelector);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Observer, OperatorFunction } from '../types';\nimport { Subscriber } from '../Subscriber';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * Tells how many values were emitted, when the source\n * completes.\n *\n * ![](count.png)\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * ## Examples\n *\n * Counts how many seconds have passed before the first click happened\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { count, takeUntil } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const secondsBeforeClick = seconds.pipe(takeUntil(clicks));\n * const result = secondsBeforeClick.pipe(count());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Counts how many odd numbers are there between 1 and 7\n * ```ts\n * import { range } from 'rxjs';\n * import { count } from 'rxjs/operators';\n *\n * const numbers = range(1, 7);\n * const result = numbers.pipe(count(i => i % 2 === 1));\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // 4\n * ```\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param {function(value: T, i: number, source: Observable): boolean} [predicate] A\n * boolean function to select what values are to be counted. It is provided with\n * arguments of:\n * - `value`: the value from the source Observable.\n * - `index`: the (zero-based) \"index\" of the value from the source Observable.\n * - `source`: the source Observable instance itself.\n * @return {Observable} An Observable of one number that represents the count as\n * described above.\n * @method count\n * @owner Observable\n */\n\nexport function count(predicate?: (value: T, index: number, source: Observable) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new CountOperator(predicate, source));\n}\n\nclass CountOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CountSubscriber extends Subscriber {\n private count: number = 0;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.predicate) {\n this._tryPredicate(value);\n } else {\n this.count++;\n }\n }\n\n private _tryPredicate(value: T) {\n let result: any;\n\n try {\n result = this.predicate(value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (result) {\n this.count++;\n }\n }\n\n protected _complete(): void {\n this.destination.next(this.count);\n this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.\n *\n * ![](debounce.png)\n *\n * `debounce` delays values emitted by the source Observable, but drops previous\n * pending delayed emissions if a new value arrives on the source Observable.\n * This operator keeps track of the most recent value from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The value is emitted only when the duration\n * Observable emits a value or completes, and if no other value was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * value appears before the duration Observable emits, the previous value will\n * be dropped and will not be emitted on the output Observable.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { debounce } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounce(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n * @method debounce\n * @owner Observable\n */\nexport function debounce(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceOperator(durationSelector));\n}\n\nclass DebounceOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue = false;\n private durationSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n try {\n const result = this.durationSelector.call(this, value);\n\n if (result) {\n this._tryNext(value, result);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.emitValue();\n this.destination.complete!();\n }\n\n private _tryNext(value: T, duration: SubscribableOrPromise): void {\n let subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n\n subscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue(): void {\n if (this.hasValue) {\n const value = this.value;\n const subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = undefined;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively if the duration selector Observable\n // emits synchronously\n this.value = undefined;\n this.hasValue = false;\n super._next(value!);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { debounceTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime(dueTime: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\n\nclass DebounceTimeOperator implements Operator {\n constructor(private dueTime: number, private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceTimeSubscriber extends Subscriber {\n private debouncedSubscription: Subscription = null;\n private lastValue: T = null;\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private dueTime: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n\n protected _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n\n debouncedNext(): void {\n this.clearDebounce();\n\n if (this.hasValue) {\n const { lastValue } = this;\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively when scheduled with things like\n // VirtualScheduler/TestScheduler.\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n\n private clearDebounce(): void {\n const debouncedSubscription = this.debouncedSubscription;\n\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\n\nfunction dispatchNext(subscriber: DebounceTimeSubscriber) {\n subscriber.debouncedNext();\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function defaultIfEmpty(defaultValue?: T): MonoTypeOperatorFunction;\nexport function defaultIfEmpty(defaultValue?: R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * If the source Observable turns out to be empty, then\n * this operator will emit a default value.\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n * If no clicks happen in 5 seconds, then emit \"no clicks\"\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { defaultIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param {any} [defaultValue=null] The default value used if the source\n * Observable is empty.\n * @return {Observable} An Observable that emits either the specified\n * `defaultValue` if the source Observable emits no items, or the values emitted\n * by the source Observable.\n * @method defaultIfEmpty\n * @owner Observable\n */\nexport function defaultIfEmpty(defaultValue: R = null): OperatorFunction {\n return (source: Observable) => source.lift(new DefaultIfEmptyOperator(defaultValue)) as Observable;\n}\n\nclass DefaultIfEmptyOperator implements Operator {\n\n constructor(private defaultValue: R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DefaultIfEmptySubscriber extends Subscriber {\n private isEmpty: boolean = true;\n\n constructor(destination: Subscriber, private defaultValue: R) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.isEmpty = false;\n this.destination.next(value);\n }\n\n protected _complete(): void {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","export function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(+value);\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.png)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n * Delay each click by one second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay: number|Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source: Observable) => source.lift(new DelayOperator(delayFor, scheduler));\n}\n\nclass DelayOperator implements Operator {\n constructor(private delay: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\n\ninterface DelayState {\n source: DelaySubscriber;\n destination: PartialObserver;\n scheduler: SchedulerLike;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelaySubscriber extends Subscriber {\n private queue: Array> = [];\n private active: boolean = false;\n private errored: boolean = false;\n\n private static dispatch(this: SchedulerAction>, state: DelayState): void {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n } else {\n this.unsubscribe();\n source.active = false;\n }\n }\n\n constructor(destination: Subscriber,\n private delay: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n private _schedule(scheduler: SchedulerLike): void {\n this.active = true;\n const destination = this.destination as Subscription;\n destination.add(scheduler.schedule>(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n\n private scheduleNotification(notification: Notification): void {\n if (this.errored === true) {\n return;\n }\n\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n\n protected _next(value: T) {\n this.scheduleNotification(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nclass DelayMessage {\n constructor(public readonly time: number,\n public readonly notification: Notification) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated In future versions, empty notifiers will no longer re-emit the source value on the output observable. */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\n/* tslint:disable:max-line-length */\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n * The completion of the notifier triggering the emission of the source value\n * is deprecated behavior and will be removed in future versions.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n * Delay each click by a random amount of time, between 0 and 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { delayWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(event => interval(Math.random() * 5000)),\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {function(value: T, index: number): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by an amount of time specified by the Observable returned by\n * `delayDurationSelector`.\n * @method delayWhen\n * @owner Observable\n */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable,\n subscriptionDelay?: Observable): MonoTypeOperatorFunction {\n if (subscriptionDelay) {\n return (source: Observable) =>\n new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n }\n return (source: Observable) => source.lift(new DelayWhenOperator(delayDurationSelector));\n}\n\nclass DelayWhenOperator implements Operator {\n constructor(private delayDurationSelector: (value: T, index: number) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelayWhenSubscriber extends OuterSubscriber {\n private completed: boolean = false;\n private delayNotifierSubscriptions: Array = [];\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private delayDurationSelector: (value: T, index: number) => Observable) {\n super(destination);\n }\n\n notifyNext(outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next!(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n const value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next!(value);\n }\n this.tryComplete();\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n try {\n const delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n }\n\n private removeSubscription(subscription: InnerSubscriber): T {\n subscription.unsubscribe();\n\n const subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n\n return subscription.outerValue;\n }\n\n private tryDelay(delayNotifier: Observable, value: T): void {\n const notifierSubscription = subscribeToResult(this, delayNotifier, value);\n\n if (notifierSubscription && !notifierSubscription.closed) {\n const destination = this.destination as Subscription;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n }\n\n private tryComplete(): void {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelayObservable extends Observable {\n constructor(public source: Observable, private subscriptionDelay: Observable) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelaySubscriber extends Subscriber {\n private sourceSubscribed: boolean = false;\n\n constructor(private parent: Subscriber, private source: Observable) {\n super();\n }\n\n protected _next(unused: any) {\n this.subscribeToSource();\n }\n\n protected _error(err: any) {\n this.unsubscribe();\n this.parent.error(err);\n }\n\n protected _complete() {\n this.unsubscribe();\n this.subscribeToSource();\n }\n\n private subscribeToSource(): void {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Converts an Observable of {@link Notification} objects into the emissions\n * that they represent.\n *\n * Unwraps {@link Notification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.\n *\n * ![](dematerialize.png)\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link Notification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * ## Example\n * Convert an Observable of Notifications to an actual Observable\n * ```ts\n * import { of, Notification } from 'rxjs';\n * import { dematerialize } from 'rxjs/operators';\n *\n * const notifA = new Notification('N', 'A');\n * const notifB = new Notification('N', 'B');\n * const notifE = new Notification('E', undefined,\n * new TypeError('x.toUpperCase is not a function')\n * );\n * const materialized = of(notifA, notifB, notifE);\n * const upperCase = materialized.pipe(dematerialize());\n * upperCase.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n * ```\n *\n * @see {@link Notification}\n * @see {@link materialize}\n *\n * @return {Observable} An Observable that emits items and notifications\n * embedded in Notification objects emitted by the source Observable.\n * @method dematerialize\n * @owner Observable\n */\nexport function dematerialize(): OperatorFunction, T> {\n return function dematerializeOperatorFunction(source: Observable>) {\n return source.lift(new DeMaterializeOperator());\n };\n}\n\nclass DeMaterializeOperator, R> implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DeMaterializeSubscriber> extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T) {\n value.observe(this.destination);\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * ## Examples\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1).pipe(\n * distinct(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 3, 4\n * ```\n *\n * An example using a keySelector function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * ).pipe(\n * distinct((p: Person) => p.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * ```\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nexport function distinct(keySelector?: (value: T) => K,\n flushes?: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctOperator(keySelector, flushes));\n}\n\nclass DistinctOperator implements Operator {\n constructor(private keySelector?: (value: T) => K, private flushes?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class DistinctSubscriber extends SimpleOuterSubscriber {\n private values = new Set();\n\n constructor(destination: Subscriber, private keySelector?: (value: T) => K, flushes?: Observable) {\n super(destination);\n\n if (flushes) {\n this.add(innerSubscribe(flushes, new SimpleInnerSubscriber(this)));\n }\n }\n\n notifyNext(): void {\n this.values.clear();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n protected _next(value: T): void {\n if (this.keySelector) {\n this._useKeySelector(value);\n } else {\n this._finalizeNext(value, value);\n }\n }\n\n private _useKeySelector(value: T): void {\n let key: K;\n const { destination } = this;\n try {\n key = this.keySelector!(value);\n } catch (err) {\n destination.error!(err);\n return;\n }\n this._finalizeNext(key, value);\n }\n\n private _finalizeNext(key: K|T, value: T) {\n const { values } = this;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next!(value);\n }\n }\n\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilChanged(compare?: (x: T, y: T) => boolean): MonoTypeOperatorFunction;\nexport function distinctUntilChanged(compare: (x: K, y: K) => boolean, keySelector: (x: T) => K): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Example\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(\n * distinctUntilChanged(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n * ```\n *\n * An example using a compare function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilChanged((p: Person, q: Person) => p.name === q.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\n\nclass DistinctUntilChangedOperator implements Operator {\n constructor(private compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DistinctUntilChangedSubscriber extends Subscriber {\n private key: K;\n private hasKey: boolean = false;\n\n constructor(destination: Subscriber,\n compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n super(destination);\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n\n private compare(x: any, y: any): boolean {\n return x === y;\n }\n\n protected _next(value: T): void {\n let key: any;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n } catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n } catch (err) {\n return this.destination.error(err);\n }\n } else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilKeyChanged(key: keyof T): MonoTypeOperatorFunction;\nexport function distinctUntilKeyChanged(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n * An example comparing the name of persons\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilKeyChanged('name'),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo1'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo2'},\n * { age: 6, name: 'Foo3'},\n * ).pipe(\n * distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified.\n * @method distinctUntilKeyChanged\n * @owner Observable\n */\nexport function distinctUntilKeyChanged(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction {\n return distinctUntilChanged((x: T, y: T) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic, MonoTypeOperatorFunction } from '../types';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n * ```ts\n * import { fromEvent, timer } from 'rxjs';\n * import { throwIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(\n * () => new Error('the document was not clicked within 1 second')\n * ),\n * )\n * .subscribe({\n * next() { console.log('The button was clicked'); },\n * error(err) { console.error(err); }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n */\nexport function throwIfEmpty (errorFactory: (() => any) = defaultErrorFactory): MonoTypeOperatorFunction {\n return (source: Observable) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\n\nclass ThrowIfEmptyOperator implements Operator {\n constructor(private errorFactory: () => any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\n\nclass ThrowIfEmptySubscriber extends Subscriber {\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber, private errorFactory: () => any) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.hasValue = true;\n this.destination.next(value);\n }\n\n protected _complete() {\n if (!this.hasValue) {\n let err: any;\n try {\n err = this.errorFactory();\n } catch (e) {\n err = e;\n }\n this.destination.error(err);\n } else {\n return this.destination.complete();\n }\n }\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * Takes the first `count` values from the source, then\n * completes.\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n * Take the first 5 seconds of an infinite 1-second interval Observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\n\nclass TakeOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeSubscriber extends Subscriber {\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\n\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * Emits only the i-th value, then completes.\n *\n * ![](elementAt.png)\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * ## Example\n * Emit only the third click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { elementAt } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(elementAt(2));\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n * ```\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return {Observable} An Observable that emits a single item, if it is found.\n * Otherwise, will emit the default value if given. If not, then emits an error.\n * @method elementAt\n * @owner Observable\n */\nexport function elementAt(index: number, defaultValue?: T): MonoTypeOperatorFunction {\n if (index < 0) { throw new ArgumentOutOfRangeError(); }\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n filter((v, i) => i === index),\n take(1),\n hasDefaultValue\n ? defaultIfEmpty(defaultValue)\n : throwIfEmpty(() => new ArgumentOutOfRangeError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F, scheduler: SchedulerLike): OperatorFunction;\n\nexport function endWith(v1: A): OperatorFunction;\nexport function endWith(v1: A, v2: B): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F): OperatorFunction;\nexport function endWith(...array: Z[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments after it finishes emitting\n * items emitted by the source Observable.\n *\n * ![](endWith.png)\n *\n * ## Example\n * ### After the source observable completes, appends an emission and then completes too.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { endWith } from 'rxjs/operators';\n *\n * of('hi', 'how are you?', 'sorry, I have to go now').pipe(\n * endWith('goodbye!'),\n * )\n * .subscribe(word => console.log(word));\n * // result:\n * // 'hi'\n * // 'how are you?'\n * // 'sorry, I have to go now'\n * // 'goodbye!'\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit last.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items emitted by the source Observable\n * and then emits the items in the specified Iterable.\n * @method endWith\n * @owner Observable\n */\nexport function endWith(...array: Array): MonoTypeOperatorFunction {\n return (source: Observable) => concat(source, of(...array)) as Observable;\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * ## Example\n * A simple example emitting true if all elements are less than 5, false otherwise\n * ```ts\n * import { of } from 'rxjs';\n * import { every } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5, 6).pipe(\n * every(x => x < 5),\n * )\n * .subscribe(x => console.log(x)); // -> false\n * ```\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified.\n * @method every\n * @owner Observable\n */\nexport function every(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new EveryOperator(predicate, thisArg, source));\n}\n\nclass EveryOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg?: any,\n private source?: Observable) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass EverySubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg: any,\n private source?: Observable) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n private notifyComplete(everyValueMatch: boolean): void {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n }\n\n protected _next(value: T): void {\n let result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (!result) {\n this.notifyComplete(false);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport function exhaust(): OperatorFunction, T>;\nexport function exhaust(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.\n *\n * ![](exhaust.png)\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaust, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(5))),\n * );\n * const result = higherOrder.pipe(exhaust());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable that takes a source of Observables and propagates the first observable\n * exclusively until it completes before subscribing to the next.\n * @method exhaust\n * @owner Observable\n */\nexport function exhaust(): OperatorFunction {\n return (source: Observable) => source.lift(new SwitchFirstOperator());\n}\n\nclass SwitchFirstOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchFirstSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private hasSubscription: boolean = false;\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(innerSubscribe(value, new SimpleInnerSubscriber(this)));\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function exhaustMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap(project: (value: T, index: number) => ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.\n *\n * ![](exhaustMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaustMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * exhaustMap(ev => interval(1000).pipe(take(5)))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable containing projected Observables\n * of each item of the source, ignoring projected Observables that start before\n * their preceding Observable has completed.\n * @method exhaustMap\n * @owner Observable\n */\nexport function exhaustMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (resultSelector) {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n exhaustMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: any) => resultSelector(a, b, i, ii)),\n )),\n );\n }\n return (source: Observable) =>\n source.lift(new ExhaustMapOperator(project));\n}\n\nclass ExhaustMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ExhaustMapSubscriber extends SimpleOuterSubscriber {\n private hasSubscription = false;\n private hasCompleted = false;\n private index = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n }\n\n private tryNext(value: T): void {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error!(err);\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, OperatorFunction, ObservableInput, SchedulerLike } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.\n *\n * ![](expand.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * ## Example\n * Start emitting the powers of two on every click, at most 10 of them\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { expand, mapTo, delay, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const powersOfTwo = clicks.pipe(\n * mapTo(1),\n * expand(x => of(2 * x).pipe(delay(1000))),\n * take(10),\n * );\n * powersOfTwo.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each projected inner Observable.\n * @return {Observable} An Observable that emits the source values and also\n * result of applying the projection function to each value emitted on the\n * output Observable and and merging the results of the Observables obtained\n * from this transformation.\n * @method expand\n * @owner Observable\n */\nexport function expand(project: (value: T, index: number) => ObservableInput,\n concurrent: number = Number.POSITIVE_INFINITY,\n scheduler?: SchedulerLike): OperatorFunction {\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n\n return (source: Observable) => source.lift(new ExpandOperator(project, concurrent, scheduler));\n}\n\nexport class ExpandOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n }\n}\n\ninterface DispatchArg {\n subscriber: ExpandSubscriber;\n result: ObservableInput;\n value: any;\n index: number;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ExpandSubscriber extends SimpleOuterSubscriber {\n private index: number = 0;\n private active: number = 0;\n private hasCompleted: boolean = false;\n private buffer?: any[];\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n super(destination);\n if (concurrent < Number.POSITIVE_INFINITY) {\n this.buffer = [];\n }\n }\n\n private static dispatch(arg: DispatchArg): void {\n const {subscriber, result, value, index} = arg;\n subscriber.subscribeToProjection(result, value, index);\n }\n\n protected _next(value: any): void {\n const destination = this.destination;\n\n if (destination.closed) {\n this._complete();\n return;\n }\n\n const index = this.index++;\n if (this.active < this.concurrent) {\n destination.next!(value);\n try {\n const { project } = this;\n const result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n } else {\n const state: DispatchArg = { subscriber: this, result, value, index };\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule>(ExpandSubscriber.dispatch as any, 0, state));\n }\n } catch (e) {\n destination.error!(e);\n }\n } else {\n this.buffer!.push(value);\n }\n }\n\n private subscribeToProjection(result: any, value: T, index: number): void {\n this.active++;\n const destination = this.destination as Subscription;\n destination.add(innerSubscribe(result, new SimpleInnerSubscriber(this)));\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this._next(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function finalize(callback: () => void): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new FinallyOperator(callback));\n}\n\nclass FinallyOperator implements Operator {\n constructor(private callback: () => void) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FinallySubscriber extends Subscriber {\n constructor(destination: Subscriber, callback: () => void) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import {Observable} from '../Observable';\nimport {Operator} from '../Operator';\nimport {Subscriber} from '../Subscriber';\nimport {OperatorFunction} from '../types';\n\nexport function find(predicate: (value: T, index: number, source: Observable) => value is S,\n thisArg?: any): OperatorFunction;\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction;\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * Finds the first value that passes some test and emits\n * that.\n *\n * ![](find.png)\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found.\n *\n * ## Example\n * Find and emit the first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { find } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(find(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method find\n * @owner Observable\n */\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, false, thisArg)) as Observable;\n}\n\nexport class FindValueOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class FindValueSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n super(destination);\n }\n\n private notifyComplete(value: any): void {\n const destination = this.destination;\n\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n }\n\n protected _next(value: T): void {\n const {predicate, thisArg} = this;\n const index = this.index++;\n try {\n const result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n }\n}\n","import { Observable } from '../Observable';\nimport { FindValueOperator } from '../operators/find';\nimport { OperatorFunction } from '../types';\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * It's like {@link find}, but emits the index of the\n * found value, not the value itself.\n *\n * ![](findIndex.png)\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * ## Example\n * Emit the index of first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { findIndex } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(findIndex(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the index of the first item that\n * matches the condition.\n * @method find\n * @owner Observable\n */\nexport function findIndex(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, true, thisArg)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function first(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * Emits only the first value. Or emits only the first\n * value that passes some test.\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. It\n * may also take a deprecated `resultSelector` function to produce the output\n * value from the input value, and a `defaultValue` to emit in case the source\n * completes before it is able to emit a valid value. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n * Emit only the first click that happens on the DOM\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param {function(value: T, index: number, source: Observable): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method first\n * @owner Observable\n */\nexport function first(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * ## Examples\n * ### Ignores emitted values, reacts to observable's completion.\n * ```ts\n * import { of } from 'rxjs';\n * import { ignoreElements } from 'rxjs/operators';\n *\n * of('you', 'talking', 'to', 'me').pipe(\n * ignoreElements(),\n * )\n * .subscribe(\n * word => console.log(word),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'the end'\n * ```\n * @return {Observable} An empty Observable that only calls `complete`\n * or `error`, based on which one is called by the source Observable.\n * @method ignoreElements\n * @owner Observable\n */\nexport function ignoreElements(): OperatorFunction {\n return function ignoreElementsOperatorFunction(source: Observable) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\n\nclass IgnoreElementsOperator implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IgnoreElementsSubscriber extends Subscriber {\n protected _next(unused: T): void {\n // Do nothing\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits false if the input observable emits any values, or emits true if the\n * input observable completes without emitting any values.\n *\n * Tells whether any values are emitted by an observable\n *\n * ![](isEmpty.png)\n *\n * `isEmpty` transforms an Observable that emits values into an Observable that\n * emits a single boolean value representing whether or not any values were\n * emitted by the source Observable. As soon as the source Observable emits a\n * value, `isEmpty` will emit a `false` and complete. If the source Observable\n * completes having not emitted anything, `isEmpty` will emit a `true` and\n * complete.\n *\n * A similar effect could be achieved with {@link count}, but `isEmpty` can emit\n * a `false` value sooner.\n *\n * ## Examples\n *\n * Emit `false` for a non-empty Observable\n * ```javascript\n * import { Subject } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const source = new Subject();\n * const result = source.pipe(isEmpty());\n * source.subscribe(x => console.log(x));\n * result.subscribe(x => console.log(x));\n * source.next('a');\n * source.next('b');\n * source.next('c');\n * source.complete();\n *\n * // Results in:\n * // a\n * // false\n * // b\n * // c\n * ```\n *\n * Emit `true` for an empty Observable\n * ```javascript\n * import { EMPTY } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const result = EMPTY.pipe(isEmpty());\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // true\n * ```\n *\n * @see {@link count}\n * @see {@link EMPTY}\n *\n * @return {OperatorFunction} An Observable of a boolean value indicating whether observable was empty or not\n * @method isEmpty\n * @owner Observable\n */\n\nexport function isEmpty(): OperatorFunction {\n return (source: Observable) => source.lift(new IsEmptyOperator());\n}\n\nclass IsEmptyOperator implements Operator {\n call (observer: Subscriber, source: any): any {\n return source.subscribe(new IsEmptySubscriber(observer));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IsEmptySubscriber extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n private notifyComplete(isEmpty: boolean): void {\n const destination = this.destination;\n\n destination.next(isEmpty);\n destination.complete();\n }\n\n protected _next(value: boolean) {\n this.notifyComplete(false);\n }\n\n protected _complete() {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the last `count` values emitted by the source Observable.\n *\n * Remembers the latest `count` values, then emits those\n * only when the source completes.\n *\n * ![](takeLast.png)\n *\n * `takeLast` returns an Observable that emits at most the last `count` values\n * emitted by the source Observable. If the source emits fewer than `count`\n * values then all of its values are emitted. This operator must wait until the\n * `complete` notification emission from the source in order to emit the `next`\n * values on the output Observable, because otherwise it is impossible to know\n * whether or not more values will be emitted on the source. For this reason,\n * all values are emitted synchronously, followed by the complete notification.\n *\n * ## Example\n * Take the last 3 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { takeLast } from 'rxjs/operators';\n *\n * const many = range(1, 100);\n * const lastThree = many.pipe(takeLast(3));\n * lastThree.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return {Observable} An Observable that emits at most the last count\n * values emitted by the source Observable.\n * @method takeLast\n * @owner Observable\n */\nexport function takeLast(count: number): MonoTypeOperatorFunction {\n return function takeLastOperatorFunction(source: Observable): Observable {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\n\nclass TakeLastOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeLastSubscriber extends Subscriber {\n private ring: Array = new Array();\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const ring = this.ring;\n const total = this.total;\n const count = this.count++;\n\n if (ring.length < total) {\n ring.push(value);\n } else {\n const index = count % total;\n ring[index] = value;\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n let count = this.count;\n\n if (count > 0) {\n const total = this.count >= this.total ? this.total : this.count;\n const ring = this.ring;\n\n for (let i = 0; i < total; i++) {\n const idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n\n destination.complete();\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function last(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * ![](last.png)\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} [predicate] - The condition any source emitted item has to satisfy.\n * @param {any} [defaultValue] - An optional default value to provide if last\n * predicate isn't met or no values were emitted.\n * @return {Observable} An Observable that emits only the last item satisfying the given condition\n * from the source, or an NoSuchElementException if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n */\nexport function last(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n takeLast(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * Like {@link map}, but it maps every source value to\n * the same output value every time.\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n * Map every click to the string 'Hi'\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nexport function mapTo(value: R): OperatorFunction {\n return (source: Observable) => source.lift(new MapToOperator(value));\n}\n\nclass MapToOperator implements Operator {\n\n value: R;\n\n constructor(value: R) {\n this.value = value;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapToSubscriber extends Subscriber {\n\n value: R;\n\n constructor(destination: Subscriber, value: R) {\n super(destination);\n this.value = value;\n }\n\n protected _next(x: T) {\n this.destination.next(this.value);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * \n *\n * ![](materialize.png)\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * ## Example\n * Convert a faulty Observable to an Observable of Notifications\n * ```ts\n * import { of } from 'rxjs';\n * import { materialize, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 13, 'd');\n * const upperCase = letters.pipe(map(x => x.toUpperCase()));\n * const materialized = upperCase.pipe(materialize());\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * // x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * // [as project] (http://1…, hasValue: false}\n * ```\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return {Observable>} An Observable that emits\n * {@link Notification} objects that wrap the original emissions from the source\n * Observable with metadata.\n * @method materialize\n * @owner Observable\n */\nexport function materialize(): OperatorFunction> {\n return function materializeOperatorFunction(source: Observable) {\n return source.lift(new MaterializeOperator());\n };\n}\n\nclass MaterializeOperator implements Operator> {\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MaterializeSubscriber extends Subscriber {\n constructor(destination: Subscriber>) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.destination.next(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n const destination = this.destination;\n destination.next(Notification.createError(err));\n destination.complete();\n }\n\n protected _complete() {\n const destination = this.destination;\n destination.next(Notification.createComplete());\n destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function scan(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function scan(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns each\n * intermediate result, with an optional seed value.\n *\n * It's like {@link reduce}, but emits the current\n * accumulation whenever the source emits a value.\n *\n * ![](scan.png)\n *\n * Combines together all values emitted on the source, using an accumulator\n * function that knows how to join a new source value into the accumulation from\n * the past. Is similar to {@link reduce}, but emits the intermediate\n * accumulations.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { scan, mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const ones = clicks.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(scan((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator\n * The accumulator function called on each source value.\n * @param {T|R} [seed] The initial accumulation value.\n * @return {Observable} An observable of the accumulated values.\n * @method scan\n * @owner Observable\n */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed?: T | R): OperatorFunction {\n let hasSeed = false;\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n\n return function scanOperatorFunction(source: Observable): Observable {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\n\nclass ScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => R, private seed?: T | R, private hasSeed: boolean = false) {}\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ScanSubscriber extends Subscriber {\n private index: number = 0;\n\n get seed(): T | R {\n return this._seed;\n }\n\n set seed(value: T | R) {\n this.hasSeed = true;\n this._seed = value;\n }\n\n constructor(destination: Subscriber, private accumulator: (acc: R, value: T, index: number) => R, private _seed: T | R,\n private hasSeed: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n } else {\n return this._tryNext(value);\n }\n }\n\n private _tryNext(value: T): void {\n const index = this.index++;\n let result: any;\n try {\n result = this.accumulator(this.seed, value, index);\n } catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\nimport { pipe } from '../util/pipe';\n\n/* tslint:disable:max-line-length */\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function reduce(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events that happened in 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { reduce, takeUntil, mapTo } from 'rxjs/operators';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click').pipe(\n * takeUntil(interval(5000)),\n * );\n * const ones = clicksInFiveSeconds.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function\n * called on each source value.\n * @param {R} [seed] The initial accumulation value.\n * @return {Observable} An Observable that emits a single value that is the\n * result of accumulating the values emitted by the source Observable.\n * @method reduce\n * @owner Observable\n */\nexport function reduce(accumulator: (acc: T | R, value: T, index?: number) => T | R, seed?: T | R): OperatorFunction {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source: Observable): Observable {\n return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source: Observable): Observable {\n return pipe(\n scan((acc, value, index) => accumulator(acc, value, index + 1)),\n takeLast(1),\n )(source);\n };\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * ![](max.png)\n *\n * ## Examples\n * Get the maximal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * max(),\n * )\n * .subscribe(x => console.log(x)); // -> 8\n * ```\n *\n * Use a comparer function to get the maximal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * max((a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * ```\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the largest value.\n * @method max\n * @owner Observable\n */\nexport function max(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const max: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) > 0 ? x : y\n : (x, y) => x > y ? x : y;\n\n return reduce(max);\n}\n","import { merge as mergeStatic } from '../observable/merge';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link merge}.\n */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction {\n return (source: Observable) => source.lift.call(mergeStatic(source, ...observables));\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction, ObservedValueOf } from '../../internal/types';\nimport { mergeMap } from './mergeMap';\nimport { ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function mergeMapTo>(innerObservable: O, concurrent?: number): OperatorFunction>;\n/** @deprecated */\nexport function mergeMapTo>(innerObservable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.\n *\n * ![](mergeMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * ## Example\n * For each click event, start an interval Observable ticking every 1 second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { mergeMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(mergeMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable`\n * @method mergeMapTo\n * @owner Observable\n */\nexport function mergeMapTo>(\n innerObservable: O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return mergeMap(() => innerObservable, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(() => innerObservable, concurrent);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { mapTo, mergeScan } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n * const one$ = click$.pipe(mapTo(1));\n * const seed = 0;\n * const count$ = one$.pipe(\n * mergeScan((acc, one) => of(acc + one), seed),\n * );\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...and so on for each click\n * ```\n *\n * @param {function(acc: R, value: T): Observable} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return {Observable} An observable of the accumulated values.\n * @method mergeScan\n * @owner Observable\n */\nexport function mergeScan(accumulator: (acc: R, value: T, index: number) => ObservableInput,\n seed: R,\n concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction {\n return (source: Observable) => source.lift(new MergeScanOperator(accumulator, seed, concurrent));\n}\n\nexport class MergeScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private seed: R,\n private concurrent: number) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MergeScanSubscriber(\n subscriber, this.accumulator, this.seed, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeScanSubscriber extends SimpleOuterSubscriber {\n private hasValue: boolean = false;\n private hasCompleted: boolean = false;\n private buffer: Observable[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private acc: R,\n private concurrent: number) {\n super(destination);\n }\n\n protected _next(value: any): void {\n if (this.active < this.concurrent) {\n const index = this.index++;\n const destination = this.destination;\n let ish;\n try {\n const { accumulator } = this;\n ish = accumulator(this.acc, value, index);\n } catch (e) {\n return destination.error!(e);\n }\n this.active++;\n this._innerSub(ish);\n } else {\n this.buffer.push(value);\n }\n }\n\n private _innerSub(ish: any): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n const { destination } = this;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n } else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n }\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * ![](min.png)\n *\n * ## Examples\n * Get the minimal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * min(),\n * )\n * .subscribe(x => console.log(x)); // -> 2\n * ```\n *\n * Use a comparer function to get the minimal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * min( (a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * ```\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the smallest value.\n * @method min\n * @owner Observable\n */\nexport function min(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const min: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) < 0 ? x : y\n : (x, y) => x < y ? x : y;\n return reduce(min);\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable, connectableObservableDescriptor } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function multicast(subject: Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(subject: Subject, selector: (shared: Observable) => O): UnaryFunction, ConnectableObservable>>;\nexport function multicast(subjectFactory: (this: Observable) => Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(SubjectFactory: (this: Observable) => Subject, selector: (shared: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the results of invoking a specified selector on items\n * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.\n *\n * ![](multicast.png)\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through\n * which the source sequence's elements will be multicast to the selector function\n * or Subject to push source elements into.\n * @param {Function} [selector] - Optional selector function that can use the multicasted source stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the given source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable} An Observable that emits the results of invoking the selector\n * on the items emitted by a `ConnectableObservable` that shares a single subscription to\n * the underlying stream.\n * @method multicast\n * @owner Observable\n */\nexport function multicast(subjectOrSubjectFactory: Subject | (() => Subject),\n selector?: (source: Observable) => Observable): OperatorFunction {\n return function multicastOperatorFunction(source: Observable): Observable {\n let subjectFactory: () => Subject;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = <() => Subject>subjectOrSubjectFactory;\n } else {\n subjectFactory = function subjectFactory() {\n return >subjectOrSubjectFactory;\n };\n }\n\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n\n const connectable: any = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n\n return > connectable;\n };\n}\n\nexport class MulticastOperator implements Operator {\n constructor(private subjectFactory: () => Subject,\n private selector: (source: Observable) => Observable) {\n }\n call(subscriber: Subscriber, source: any): any {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Observable } from '../Observable';\nimport { from } from '../observable/from';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isArray } from '../util/isArray';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(...observables: Array>): OperatorFunction;\nexport function onErrorResumeNext(array: ObservableInput[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link Observable#subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catchError} instead.\n *\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { of } from 'rxjs';\n * import { onErrorResumeNext, map } from 'rxjs/operators';\n *\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) { throw Error(); }\n * return 10 / x;\n * }),\n * onErrorResumeNext(of(1, 2, 3)),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('that\\'s it!')\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} observables Observables passed either directly or as an array.\n * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes\n * to the next passed Observable and so on, until it completes or runs out of Observables.\n * @method onErrorResumeNext\n * @owner Observable\n */\n\nexport function onErrorResumeNext(...nextSources: Array |\n Array>>): OperatorFunction {\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = >>nextSources[0];\n }\n\n return (source: Observable) => source.lift(new OnErrorResumeNextOperator(nextSources));\n}\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNextStatic(v: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNextStatic(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNextStatic(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\nexport function onErrorResumeNextStatic(...nextSources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n let source: ObservableInput|undefined = undefined;\n\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0] as ObservableInput[];\n }\n // TODO: resolve issue with passing no arguments.\n source = nextSources.shift()!;\n\n return from(source).lift(new OnErrorResumeNextOperator(nextSources));\n}\n\nclass OnErrorResumeNextOperator implements Operator {\n constructor(private nextSources: Array>) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n }\n}\n\nclass OnErrorResumeNextSubscriber extends SimpleOuterSubscriber {\n constructor(protected destination: Subscriber,\n private nextSources: Array>) {\n super(destination);\n }\n\n notifyError(): void {\n this.subscribeToNextSource();\n }\n\n notifyComplete(): void {\n this.subscribeToNextSource();\n }\n\n protected _error(err: any): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n private subscribeToNextSource(): void {\n const next = this.nextSources.shift();\n if (!!next) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(next, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n } else {\n this.destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise(): OperatorFunction {\n return (source: Observable) => source.lift(new PairwiseOperator());\n}\n\nclass PairwiseOperator implements Operator {\n call(subscriber: Subscriber<[T, T]>, source: any): any {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass PairwiseSubscriber extends Subscriber {\n private prev: T;\n private hasPrev: boolean = false;\n\n constructor(destination: Subscriber<[T, T]>) {\n super(destination);\n }\n\n _next(value: T): void {\n let pair: [T, T] | undefined;\n\n if (this.hasPrev) {\n pair = [this.prev, value];\n } else {\n this.hasPrev = true;\n }\n\n this.prev = value;\n\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","import { not } from '../util/not';\nimport { filter } from './filter';\nimport { Observable } from '../Observable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition click events into those on DIV elements and those elsewhere\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { partition } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const parts = clicks.pipe(partition(ev => ev.target.tagName === 'DIV'));\n * const clicksOnDivs = parts[0];\n * const clicksElsewhere = parts[1];\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n * @method partition\n * @owner Observable\n * @deprecated use `partition` static creation function instead\n */\nexport function partition(predicate: (value: T, index: number) => boolean,\n thisArg?: any): UnaryFunction, [Observable, Observable]> {\n return (source: Observable) => [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg) as any)(source)\n ] as [Observable, Observable];\n}\n","import { Observable } from '../Observable';\nimport { map } from './map';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pluck(k1: K1): OperatorFunction;\nexport function pluck(k1: K1, k2: K2): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): OperatorFunction;\nexport function pluck(...properties: string[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.\n *\n * ![](pluck.png)\n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * ## Example\n * Map every click to the tagName of the clicked target element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pluck } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const tagNames = clicks.pipe(pluck('target', 'tagName'));\n * tagNames.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nexport function pluck(...properties: string[]): OperatorFunction {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return (source: Observable) => map(plucker(properties, length))(source as any);\n}\n\nfunction plucker(props: string[], length: number): (x: string) => any {\n const mapper = (x: string) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp != null ? currentProp[props[i]] : undefined;\n if (p !== void 0) {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n return currentProp;\n };\n\n return mapper;\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publish(): UnaryFunction, ConnectableObservable>;\nexport function publish>(selector: (shared: Observable) => O): OperatorFunction>;\nexport function publish(selector: MonoTypeOperatorFunction): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * Makes a cold Observable hot\n *\n * ![](publish.png)\n *\n * ## Examples\n * Make source$ hot by applying publish operator, then merge each inner observable into a single one\n * and subscribe.\n * ```ts\n * import { of, zip, interval, merge } from \"rxjs\";\n * import { map, publish, tap } from \"rxjs/operators\";\n *\n * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)).pipe(\n * map(values => values[1])\n * );\n *\n * source$\n * .pipe(\n * publish(multicasted$ =>\n * merge(\n * multicasted$.pipe(tap(x => console.log('Stream 1:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 2:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 3:', x))),\n * )\n * )\n * )\n * .subscribe();\n *\n * // Results every two seconds\n * // Stream 1: 1\n * // Stream 2: 1\n * // Stream 3: 1\n * // ...\n * // Stream 1: 9\n * // Stream 2: 9\n * // Stream 3: 9\n * ```\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.\n * @method publish\n * @owner Observable\n *\n *\n */\nexport function publish(selector?: OperatorFunction): MonoTypeOperatorFunction | OperatorFunction {\n return selector ?\n multicast(() => new Subject(), selector) :\n multicast(new Subject());\n}\n","import { Observable } from '../Observable';\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * @param value\n * @return {ConnectableObservable}\n * @method publishBehavior\n * @owner Observable\n */\nexport function publishBehavior(value: T): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new BehaviorSubject(value))(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Returns a connectable observable sequence that shares a single subscription to the\n * underlying sequence containing only the last notification.\n *\n * ![](publishLast.png)\n *\n * Similar to {@link publish}, but it waits until the source observable completes and stores\n * the last emitted value.\n * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last\n * value even if it has no more subscribers. If subsequent subscriptions happen, they will\n * immediately get that last stored value and complete.\n *\n * ## Example\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { publishLast, tap, take } from 'rxjs/operators';\n *\n * const connectable =\n * interval(1000)\n * .pipe(\n * tap(x => console.log(\"side effect\", x)),\n * take(3),\n * publishLast());\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. A\", x),\n * err => console.log(\"Sub. A Error\", err),\n * () => console.log( \"Sub. A Complete\"));\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. B\", x),\n * err => console.log(\"Sub. B Error\", err),\n * () => console.log( \"Sub. B Complete\"));\n *\n * connectable.connect();\n *\n * // Results:\n * // \"side effect 0\"\n * // \"side effect 1\"\n * // \"side effect 2\"\n * // \"Sub. A 2\"\n * // \"Sub. B 2\"\n * // \"Sub. A Complete\"\n * // \"Sub. B Complete\"\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link publish}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @return {ConnectableObservable} An observable sequence that contains the elements of a\n * sequence produced by multicasting the source sequence.\n * @method publishLast\n * @owner Observable\n */\n\nexport function publishLast(): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new AsyncSubject())(source);\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction, MonoTypeOperatorFunction, OperatorFunction, SchedulerLike, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publishReplay(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\nexport function publishReplay>(bufferSize?: number, windowTime?: number, selector?: (shared: Observable) => O, scheduler?: SchedulerLike): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\nexport function publishReplay(bufferSize?: number,\n windowTime?: number,\n selectorOrScheduler?: SchedulerLike | OperatorFunction,\n scheduler?: SchedulerLike): UnaryFunction, ConnectableObservable> {\n\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n\n const selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n const subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n\n return (source: Observable) => multicast(() => subject, selector)(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { MonoTypeOperatorFunction, OperatorFunction } from '../types';\nimport { race as raceStatic } from '../observable/race';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of this Observable and supplied Observables.\n * @param {...Observables} ...observables Sources used to race for which Observable emits first.\n * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.\n * @method race\n * @owner Observable\n * @deprecated Deprecated in favor of static {@link race}.\n */\nexport function race(...observables: (Observable | Observable[])[]): MonoTypeOperatorFunction {\n return function raceOperatorFunction(source: Observable) {\n // if the only argument is an array, it was most likely called with\n // `pair([obs1, obs2, ...])`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as Observable[];\n }\n\n return source.lift.call(raceStatic(source, ...(observables as Observable[])));\n };\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { empty } from '../observable/empty';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes, at most count times.\n *\n * Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.\n *\n * ![](repeat.png)\n *\n * Similar to {@link retry}, this operator repeats the stream of items emitted by the source for non error cases.\n * Repeat can be useful for creating observables that are meant to have some repeated pattern or rhythm.\n *\n * Note: `repeat(0)` returns an empty observable and `repeat()` will repeat forever\n *\n * ## Example\n * Repeat a message stream\n * ```ts\n * import { of } from 'rxjs';\n * import { repeat, delay } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const example = source.pipe(repeat(3));\n * example.subscribe(x => console.log(x));\n *\n * // Results\n * // Repeat message\n * // Repeat message\n * // Repeat message\n * ```\n *\n * Repeat 3 values, 2 times\n * ```ts\n * import { interval } from 'rxjs';\n * import { repeat, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(take(3), repeat(2));\n * example.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return {Observable} An Observable that will resubscribe to the source stream when the source stream completes\n * , at most count times.\n * @method repeat\n * @owner Observable\n */\nexport function repeat(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n } else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\n\nclass RepeatOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatSubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n complete() {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.complete();\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * ![](repeatWhen.png)\n *\n * ## Example\n * Repeat a message stream on click\n * ```ts\n * import { of, fromEvent } from 'rxjs';\n * import { repeatWhen } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const documentClick$ = fromEvent(document, 'click');\n *\n * source.pipe(repeatWhen(() => documentClick$)\n * ).subscribe(data => console.log(data))\n * ```\n * @see {@link repeat}\n * @see {@link retry}\n * @see {@link retryWhen}\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return {Observable} The source Observable modified with repeat logic.\n * @method repeatWhen\n * @owner Observable\n */\nexport function repeatWhen(notifier: (notifications: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RepeatWhenOperator(notifier));\n}\n\nclass RepeatWhenOperator implements Operator {\n constructor(protected notifier: (notifications: Observable) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatWhenSubscriber extends SimpleOuterSubscriber {\n\n private notifications?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n private sourceIsBeingSubscribedTo: boolean = true;\n\n constructor(destination: Subscriber,\n private notifier: (notifications: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n notifyNext(): void {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n }\n\n notifyComplete(): void {\n if (this.sourceIsBeingSubscribedTo === false) {\n return super.complete();\n }\n }\n\n complete() {\n this.sourceIsBeingSubscribedTo = false;\n\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return super.complete();\n }\n\n this._unsubscribeAndRecycle();\n this.notifications!.next(undefined);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { notifications, retriesSubscription } = this;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n super._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n return this;\n }\n\n private subscribeToRetries() {\n this.notifications = new Subject();\n let retries;\n try {\n const { notifier } = this;\n retries = notifier(this.notifications);\n } catch (e) {\n return super.complete();\n }\n this.retries = retries;\n this.retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * ![](retry.png)\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n *\n * ## Example\n * ```ts\n * import { interval, of, throwError } from 'rxjs';\n * import { mergeMap, retry } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * mergeMap(val => {\n * if(val > 5){\n * return throwError('Error!');\n * }\n * return of(val);\n * }),\n * //retry 2 times on error\n * retry(2)\n * );\n *\n * const subscribe = example.subscribe({\n * next: val => console.log(val),\n * error: val => console.log(`${val}: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // \"Error!: Retried 2 times then quit!\"\n * ```\n *\n * @param {number} count - Number of retry attempts before failing.\n * @return {Observable} The source Observable modified with the retry logic.\n * @method retry\n * @owner Observable\n */\nexport function retry(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryOperator(count, source));\n}\n\nclass RetryOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetrySubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n error(err: any) {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.error(err);\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * ![](retryWhen.png)\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return {Observable} The source Observable modified with retry logic.\n * @method retryWhen\n * @owner Observable\n */\nexport function retryWhen(notifier: (errors: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryWhenOperator(notifier, source));\n}\n\nclass RetryWhenOperator implements Operator {\n constructor(protected notifier: (errors: Observable) => Observable,\n protected source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetryWhenSubscriber extends SimpleOuterSubscriber {\n\n private errors?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private notifier: (errors: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n error(err: any) {\n if (!this.isStopped) {\n\n let errors = this.errors;\n let retries: any = this.retries;\n let retriesSubscription = this.retriesSubscription;\n\n if (!retries) {\n errors = new Subject();\n try {\n const { notifier } = this;\n retries = notifier(errors);\n } catch (e) {\n return super.error(e);\n }\n retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n } else {\n this.errors = undefined;\n this.retriesSubscription = undefined;\n }\n\n this._unsubscribeAndRecycle();\n\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n\n errors!.next(err);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { errors, retriesSubscription } = this;\n if (errors) {\n errors.unsubscribe();\n this.errors = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n notifyNext(): void {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n this.source.subscribe(this);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.\n *\n * ![](sample.png)\n *\n * Whenever the `notifier` Observable emits a value or completes, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n * On every click, sample the most recent \"seconds\" timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { sample } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {Observable} notifier The Observable to use for sampling the\n * source Observable.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable whenever the notifier Observable\n * emits value or completes.\n * @method sample\n * @owner Observable\n */\nexport function sample(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleOperator(notifier));\n}\n\nclass SampleOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const sampleSubscriber = new SampleSubscriber(subscriber);\n const subscription = source.subscribe(sampleSubscriber);\n subscription.add(innerSubscribe(this.notifier, new SimpleInnerSubscriber(sampleSubscriber)));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue: boolean = false;\n\n protected _next(value: T) {\n this.value = value;\n this.hasValue = true;\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next!(this.value!);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * Samples the source Observable at periodic time\n * intervals, emitting what it samples.\n *\n * ![](sampleTime.png)\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * ## Example\n * Every second, emit the most recent click at most once\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { sampleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(sampleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the sampling.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable at the specified time interval.\n * @method sampleTime\n * @owner Observable\n */\nexport function sampleTime(period: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleTimeOperator(period, scheduler));\n}\n\nclass SampleTimeOperator implements Operator {\n constructor(private period: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleTimeSubscriber extends Subscriber {\n lastValue: T;\n hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private period: number,\n private scheduler: SchedulerLike) {\n super(destination);\n this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period }));\n }\n\n protected _next(value: T) {\n this.lastValue = value;\n this.hasValue = true;\n }\n\n notifyNext() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n }\n}\n\nfunction dispatchNotification(this: SchedulerAction, state: any) {\n let { subscriber, period } = state;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Compares all values of two observables in sequence using an optional comparator function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * Checks to see of all values emitted by both observables are equal, in order.\n *\n * ![](sequenceEqual.png)\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other complets, the returned observable will never complete.\n *\n * ## Example\n * figure out if the Konami code matches\n * ```ts\n * import { from, fromEvent } from 'rxjs';\n * import { sequenceEqual, bufferCount, mergeMap, map } from 'rxjs/operators';\n *\n * const codes = from([\n * 'ArrowUp',\n * 'ArrowUp',\n * 'ArrowDown',\n * 'ArrowDown',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'KeyB',\n * 'KeyA',\n * 'Enter', // no start key, clearly.\n * ]);\n *\n * const keys = fromEvent(document, 'keyup').pipe(map(e => e.code));\n * const matches = keys.pipe(\n * bufferCount(11, 1),\n * mergeMap(\n * last11 => from(last11).pipe(sequenceEqual(codes)),\n * ),\n * );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparator] An optional function to compare each value pair\n * @return {Observable} An Observable of a single boolean value representing whether or not\n * the values emitted by both observables were equal in sequence.\n * @method sequenceEqual\n * @owner Observable\n */\nexport function sequenceEqual(compareTo: Observable,\n comparator?: (a: T, b: T) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new SequenceEqualOperator(compareTo, comparator));\n}\n\nexport class SequenceEqualOperator implements Operator {\n constructor(private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SequenceEqualSubscriber extends Subscriber {\n private _a: T[] = [];\n private _b: T[] = [];\n private _oneComplete = false;\n\n constructor(destination: Observer,\n private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n super(destination);\n (this.destination as Subscription).add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this)));\n }\n\n protected _next(value: T): void {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n } else {\n this._a.push(value);\n this.checkValues();\n }\n }\n\n public _complete(): void {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n }\n\n checkValues() {\n const { _a, _b, comparator } = this;\n while (_a.length > 0 && _b.length > 0) {\n let a = _a.shift();\n let b = _b.shift();\n let areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n } catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n }\n\n emit(value: boolean) {\n const { destination } = this;\n destination.next(value);\n destination.complete();\n }\n\n nextB(value: T) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n } else {\n this._b.push(value);\n this.checkValues();\n }\n }\n\n completeB() {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n }\n}\n\nclass SequenceEqualCompareToSubscriber extends Subscriber {\n constructor(destination: Observer, private parent: SequenceEqualSubscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.parent.nextB(value);\n }\n\n protected _error(err: any): void {\n this.parent.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.completeB();\n this.unsubscribe();\n }\n}\n","import { Observable } from '../Observable';\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\n\nimport { MonoTypeOperatorFunction } from '../types';\n\nfunction shareSubjectFactory() {\n return new Subject();\n}\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * ![](share.png)\n *\n * @return {Observable} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share(): MonoTypeOperatorFunction {\n return (source: Observable) => refCount()(multicast(shareSubjectFactory)(source)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplayed observable` forever,\n * but an errored source can be retried.\n *\n * ## Why use shareReplay?\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ![](shareReplay.png)\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { shareReplay, take } from 'rxjs/operators';\n *\n * const obs$ = interval(1000);\n * const shared$ = obs$.pipe(\n * take(4),\n * shareReplay(3)\n * );\n * shared$.subscribe(x => console.log('source A: ', x));\n * shared$.subscribe(y => console.log('source B: ', y));\n *\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param {Number} [bufferSize=Number.POSITIVE_INFINITY] Maximum element count of the replay buffer.\n * @param {Number} [windowTime=Number.POSITIVE_INFINITY] Maximum time length of the replay buffer in milliseconds.\n * @param {Scheduler} [scheduler] Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return {Observable} An observable sequence that contains the elements of a sequence produced\n * by multicasting the source sequence within a selector function.\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay(\n config: ShareReplayConfig\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n bufferSize?: number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction {\n let config: ShareReplayConfig;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize as ShareReplayConfig;\n } else {\n config = {\n bufferSize: configOrBufferSize as number | undefined,\n windowTime,\n refCount: false,\n scheduler,\n };\n }\n return (source: Observable) => source.lift(shareReplayOperator(config));\n}\n\nfunction shareReplayOperator({\n bufferSize = Number.POSITIVE_INFINITY,\n windowTime = Number.POSITIVE_INFINITY,\n refCount: useRefCount,\n scheduler,\n}: ShareReplayConfig) {\n let subject: ReplaySubject | undefined;\n let refCount = 0;\n let subscription: Subscription | undefined;\n let hasError = false;\n let isComplete = false;\n\n return function shareReplayOperation(\n this: Subscriber,\n source: Observable\n ) {\n refCount++;\n let innerSub: Subscription;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next(value) {\n subject.next(value);\n },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n\n // Here we need to check to see if the source synchronously completed. Although\n // we're setting `subscription = undefined` in the completion handler, if the source\n // is synchronous, that will happen *before* subscription is set by the return of\n // the `subscribe` call.\n if (isComplete) {\n subscription = undefined;\n }\n } else {\n innerSub = subject.subscribe(this);\n }\n\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n innerSub = undefined;\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n\nimport { Observer, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that emits the single item emitted by the source Observable that matches a specified\n * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no\n * items, notify of an IllegalArgumentException or NoSuchElementException respectively. If the source Observable\n * emits items but none match the specified predicate then `undefined` is emitted.\n *\n * Like {@link first}, but emit with error notification if there is more than one value.\n * ![](single.png)\n *\n * ## Example\n * emits 'error'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single());\n * numbers.subscribe(x => console.log('never get called'), e => console.log('error'));\n * // result\n * // 'error'\n * ```\n *\n * emits 'undefined'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single(x => x === 10));\n * numbers.subscribe(x => console.log(x));\n * // result\n * // 'undefined'\n * ```\n *\n * @see {@link first}\n * @see {@link find}\n * @see {@link findIndex}\n * @see {@link elementAt}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return {Observable} An Observable that emits the single item emitted by the source Observable that matches\n * the predicate or `undefined` when no items match.\n *\n * @method single\n * @owner Observable\n */\nexport function single(predicate?: (value: T, index: number, source: Observable) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SingleOperator(predicate, source));\n}\n\nclass SingleOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SingleSubscriber extends Subscriber {\n private seenValue: boolean = false;\n private singleValue: T;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n private applySingleValue(value: T): void {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n } else {\n this.seenValue = true;\n this.singleValue = value;\n }\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n\n if (this.predicate) {\n this.tryNext(value, index);\n } else {\n this.applySingleValue(value);\n }\n }\n\n private tryNext(value: T, index: number): void {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n } else {\n destination.error(new EmptyError);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return {Observable} An Observable that skips values emitted by the source Observable.\n *\n * @method skip\n * @owner Observable\n */\nexport function skip(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipOperator(count));\n}\n\nclass SkipOperator implements Operator {\n constructor(private total: number) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipSubscriber extends Subscriber {\n count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(x: T) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Skip the last `count` values emitted by the source Observable.\n *\n * ![](skipLast.png)\n *\n * `skipLast` returns an Observable that accumulates a queue with a length\n * enough to store the first `count` values. As more values are received,\n * values are taken from the front of the queue and produced on the result\n * sequence. This causes values to be delayed.\n *\n * ## Example\n * Skip the last 2 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { skipLast } from 'rxjs/operators';\n *\n * const many = range(1, 5);\n * const skipLastTwo = many.pipe(skipLast(2));\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws\n * ArgumentOutOrRangeError if `i < 0`.\n *\n * @param {number} count Number of elements to skip from the end of the source Observable.\n * @returns {Observable} An Observable that skips the last count values\n * emitted by the source Observable.\n * @method skipLast\n * @owner Observable\n */\nexport function skipLast(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipLastOperator(count));\n}\n\nclass SkipLastOperator implements Operator {\n constructor(private _skipCount: number) {\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n if (this._skipCount === 0) {\n // If we don't want to skip any values then just subscribe\n // to Subscriber without any further logic.\n return source.subscribe(new Subscriber(subscriber));\n } else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipLastSubscriber extends Subscriber {\n private _ring: T[];\n private _count: number = 0;\n\n constructor(destination: Subscriber, private _skipCount: number) {\n super(destination);\n this._ring = new Array(_skipCount);\n }\n\n protected _next(value: T): void {\n const skipCount = this._skipCount;\n const count = this._count++;\n\n if (count < skipCount) {\n this._ring[count] = value;\n } else {\n const currentIndex = count % skipCount;\n const ring = this._ring;\n const oldValue = ring[currentIndex];\n\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic, ObservableInput } from '../types';\nimport { Subscription } from '../Subscription';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values ​​until the passed in observable emits the first value.\n * This can be particularly useful in combination with user interactions, responses of http requests or waiting for specific times to pass by.\n *\n * ![](skipUntil.png)\n *\n * Internally the `skipUntil` operator subscribes to the passed in observable (in the following called *notifier*) in order to recognize the emission\n * of its first value. When this happens, the operator unsubscribes from the *notifier* and starts emitting the values of the *source*\n * observable. It will never let the *source* observable emit any values if the *notifier* completes or throws an error without emitting\n * a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values ​​of the interval observable are skipped until the user clicks anywhere within the page.\n *\n * ```ts\n * import { interval, fromEvent } from 'rxjs';\n * import { skipUntil } from 'rxjs/operators';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n * skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * const subscribe = emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return {Observable} An Observable that skips items from the source Observable until the second Observable emits\n * an item, then emits the remaining items.\n * @method skipUntil\n * @owner Observable\n */\nexport function skipUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipUntilOperator(notifier));\n}\n\nclass SkipUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(destination: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipUntilSubscriber extends SimpleOuterSubscriber {\n\n private hasValue: boolean = false;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber, notifier: ObservableInput) {\n super(destination);\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n this.innerSubscription = innerSubscriber;\n const innerSubscription = innerSubscribe(notifier, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n this.innerSubscription = innerSubscription;\n }\n }\n\n protected _next(value: T) {\n if (this.hasValue) {\n super._next(value);\n }\n }\n\n notifyNext(): void {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n }\n\n notifyComplete() {\n /* do nothing */\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * ![](skipWhile.png)\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return {Observable} An Observable that begins emitting items emitted by the source Observable when the\n * specified predicate becomes false.\n * @method skipWhile\n * @owner Observable\n */\nexport function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipWhileOperator(predicate));\n}\n\nclass SkipWhileOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipWhileSubscriber extends Subscriber {\n private skipping: boolean = true;\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n\n if (!this.skipping) {\n destination.next(value);\n }\n }\n\n private tryCallPredicate(value: T): void {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n } catch (err) {\n this.destination.error(err);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nimport { MonoTypeOperatorFunction, OperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction;\n\nexport function startWith(v1: D): OperatorFunction;\nexport function startWith(v1: D, v2: E): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I): OperatorFunction;\nexport function startWith(...array: D[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Start the chain of emissions with `\"first\"`, `\"second\"`\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * of(\"from source\")\n * .pipe(startWith(\"first\", \"second\"))\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // \"first\"\n * // \"second\"\n * // \"from source\"\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith(...array: Array): OperatorFunction {\n const scheduler = array[array.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n // deprecated path\n array.pop();\n return (source: Observable) => concat(array as T[], source, scheduler);\n } else {\n return (source: Observable) => concat(array as T[], source);\n }\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\n\nexport interface DispatchArg {\n source: Observable;\n subscriber: Subscriber;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class SubscribeOnObservable extends Observable {\n /** @nocollapse */\n static create(source: Observable, delay: number = 0, scheduler: SchedulerLike = asap): Observable {\n return new SubscribeOnObservable(source, delay, scheduler);\n }\n\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: DispatchArg): Subscription {\n const { source, subscriber } = arg;\n return this.add(source.subscribe(subscriber));\n }\n\n constructor(public source: Observable,\n private delayTime: number = 0,\n private scheduler: SchedulerLike = asap) {\n super();\n if (!isNumeric(delayTime) || delayTime < 0) {\n this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n this.scheduler = asap;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const delay = this.delayTime;\n const source = this.source;\n const scheduler = this.scheduler;\n\n return scheduler.schedule>(SubscribeOnObservable.dispatch, delay, {\n source, subscriber\n });\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n * Given the following code:\n * ```javascript\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3, 4);\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n * This will result in the output of `1 2 3 4 5 6 7 8 9`.\n *\n * But if we instead us the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emited by Observable `a`:\n * ```javascript\n * import { of, merge, asyncScheduler } from 'rxjs';\n * import { subscribeOn } from 'rxjs/operators';\n *\n * const a = of(1, 2, 3, 4).pipe(subscribeOn(asyncScheduler));\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * The output will instead be `5 6 7 8 9 1 2 3 4`.\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param {SchedulerLike} scheduler - The {@link SchedulerLike} to perform subscription actions on.\n * @return {Observable} The source Observable modified so that its subscriptions happen on the specified {@link SchedulerLike}.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function subscribeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\n\nclass SubscribeOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike,\n private delay: number) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return new SubscribeOnObservable(\n source, this.delay, this.scheduler\n ).subscribe(subscriber);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function switchMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables.\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n * Generate new Observable according to source Observable values\n * ```typescript\n * import { of } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const switched = of(1, 2, 3).pipe(switchMap((x: number) => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // ... and so on\n * ```\n *\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap((ev) => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return (source: Observable) => source.pipe(\n switchMap((a, i) => from(project(a, i)).pipe(\n map((b, ii) => resultSelector(a, b, i, ii))\n ))\n );\n }\n return (source: Observable) => source.lift(new SwitchMapOperator(project));\n}\n\nclass SwitchMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n private index = 0;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (error) {\n this.destination.error!(error);\n return;\n }\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n\n protected _complete(): void {\n const {innerSubscription} = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n\n protected _unsubscribe() {\n this.innerSubscription = undefined;\n }\n\n notifyComplete(): void {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n}\n","import {OperatorFunction, ObservableInput} from '../types';\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\n\nexport function switchAll(): OperatorFunction, T>;\nexport function switchAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable\n * producing values only from the most recent observable sequence\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](switchAll.png)\n *\n * `switchAll` subscribes to a source that is an observable of observables, also known as a\n * \"higher-order observable\" (or `Observable>`). It subscribes to the most recently\n * provided \"inner observable\" emitted by the source, unsubscribing from any previously subscribed\n * to inner observable, such that only the most recent inner observable may be subscribed to at\n * any point in time. The resulting observable returned by `switchAll` will only complete if the\n * source observable completes, *and* any currently subscribed to inner observable also has completed,\n * if there are any.\n *\n * ## Examples\n * Spawn a new interval observable for each click event, but for every new\n * click, cancel the previous interval and subscribe to the new one.\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchAll, map, tap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));\n * const source = clicks.pipe(map((ev) => interval(1000)));\n *\n * source.pipe(\n * switchAll()\n * ).subscribe(x => console.log(x));\n *\n * // Output\n * // click\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...\n * // click\n * // 1\n * // 2\n * // 3\n * // ...\n * // click\n * // ...\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link mergeAll}\n */\n\nexport function switchAll(): OperatorFunction, T> {\n return switchMap(identity);\n}\n","import { ObservableInput, OperatorFunction } from '../types';\nimport { switchMap } from './switchMap';\n\n/* tslint:disable:max-line-length */\nexport function switchMapTo(observable: ObservableInput): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: undefined): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switchMap} in the output Observable.\n *\n * It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](switchMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * ## Example\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through the deprecated `resultSelector`)\n * every time a value is emitted on the source Observable, and taking only the values\n * from the most recently projected inner Observable.\n * @method switchMapTo\n * @owner Observable\n */\nexport function switchMapTo(\n innerObservable: ObservableInput,\n resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction {\n return resultSelector ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n * Tick every second until the first click happens\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { takeUntil } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new TakeUntilOperator(notifier));\n}\n\nclass TakeUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n seenValue = false;\n\n constructor(destination: Subscriber, ) {\n super(destination);\n }\n\n notifyNext(): void {\n this.seenValue = true;\n this.complete();\n }\n\n notifyComplete(): void {\n // noop\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\nexport function takeWhile(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n * Emit click events only while the clientX property is greater than 200\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { takeWhile } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @param {boolean} inclusive When set to `true` the value that caused\n * `predicate` to return `false` will also be emitted.\n * @return {Observable} An Observable that emits the values from the source\n * Observable so long as each value satisfies the condition defined by the\n * `predicate`, then completes.\n * @method takeWhile\n * @owner Observable\n */\nexport function takeWhile(\n predicate: (value: T, index: number) => boolean,\n inclusive = false): MonoTypeOperatorFunction {\n return (source: Observable) =>\n source.lift(new TakeWhileOperator(predicate, inclusive));\n}\n\nclass TakeWhileOperator implements Operator {\n constructor(\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {}\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeWhileSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(\n destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n let result: boolean;\n try {\n result = this.predicate(value, this.index++);\n } catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n\n private nextOrComplete(value: T, predicateResult: boolean): void {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n } else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, TeardownLogic } from '../types';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: null | undefined, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of an error callback */\nexport function tap(next: null | undefined, error: (error: any) => void, complete?: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: (value: T) => void, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\nexport function tap(next?: (x: T) => void, error?: (e: any) => void, complete?: () => void): MonoTypeOperatorFunction;\nexport function tap(observer: PartialObserver): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.\n *\n * ![](do.png)\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `tap` is not subscribed, the side effects specified by the\n * Observer will never happen. `tap` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * ## Example\n * Map every click to the clientX position of that click, while also logging the click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { tap, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(\n * tap(ev => console.log(ev)),\n * map(ev => ev.clientX),\n * );\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n * @see {@link Observable#subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @name tap\n */\nexport function tap(nextOrObserver?: PartialObserver | ((x: T) => void),\n error?: (e: any) => void,\n complete?: () => void): MonoTypeOperatorFunction {\n return function tapOperatorFunction(source: Observable): Observable {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\n\nclass DoOperator implements Operator {\n constructor(private nextOrObserver?: PartialObserver | ((x: T) => void),\n private error?: (e: any) => void,\n private complete?: () => void) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\n\nclass TapSubscriber extends Subscriber {\n private _context: any;\n\n private _tapNext: ((value: T) => void) = noop;\n\n private _tapError: ((err: any) => void) = noop;\n\n private _tapComplete: (() => void) = noop;\n\n constructor(destination: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super(destination);\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n } else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n\n _next(value: T) {\n try {\n this._tapNext.call(this._context, value);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n\n _error(err: any) {\n try {\n this._tapError.call(this._context, err);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n\n _complete() {\n try {\n this._tapComplete.call(this._context, );\n } catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport interface ThrottleConfig {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport const defaultThrottleConfig: ThrottleConfig = {\n leading: true,\n trailing: false\n};\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](throttle.png)\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nexport function throttle(durationSelector: (value: T) => SubscribableOrPromise,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\n\nclass ThrottleOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n private _throttled?: Subscription;\n private _sendValue?: T;\n private _hasValue = false;\n\n constructor(protected destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise,\n private _leading: boolean,\n private _trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this._hasValue = true;\n this._sendValue = value;\n\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n } else {\n this.throttle(value);\n }\n }\n }\n\n private send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue!);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n\n private throttle(value: T): void {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n\n private tryDurationSelector(value: T): SubscribableOrPromise | null {\n try {\n return this.durationSelector(value);\n } catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n\n private throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n\n if (_trailing) {\n this.send();\n }\n }\n\n notifyNext(): void {\n this.throttlingDone();\n }\n\n notifyComplete(): void {\n this.throttlingDone();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { ThrottleConfig, defaultThrottleConfig } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.\n *\n * ![](throttleTime.png)\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * #### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * #### Double Click\n *\n * The following example only emits clicks which happen within a subsequent\n * delay of 400ms of the previous click. This for example can emulate a double\n * click. It makes use of the `trailing` parameter of the throttle configuration.\n *\n * ```ts\n * import { fromEvent, asyncScheduler } from 'rxjs';\n * import { throttleTime, withLatestFrom } from 'rxjs/operators';\n *\n * // defaultThottleConfig = { leading: true, trailing: false }\n * const throttleConfig = {\n * leading: false,\n * trailing: true\n * }\n *\n * const click = fromEvent(document, 'click');\n * const doubleClick = click.pipe(\n * throttleTime(400, asyncScheduler, throttleConfig)\n * );\n *\n * doubleClick.subscribe((throttleValue: Event) => {\n * console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`);\n * });\n * ```\n *\n * If you enable the `leading` parameter in this example, the output would be the primary click and\n * the double click, but restricts additional clicks within 400ms.\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling.\n * @param {Object} config a configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nexport function throttleTime(duration: number,\n scheduler: SchedulerLike = async,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\n\nclass ThrottleTimeOperator implements Operator {\n constructor(private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleTimeSubscriber extends Subscriber {\n private throttled: Subscription;\n private _hasTrailingValue: boolean = false;\n private _trailingValue: T = null;\n\n constructor(destination: Subscriber,\n private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n } else {\n this.add(this.throttled = this.scheduler.schedule>(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n } else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n\n protected _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n } else {\n this.destination.complete();\n }\n }\n\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\n\ninterface DispatchArg {\n subscriber: ThrottleTimeSubscriber;\n}\n\nfunction dispatchNext(arg: DispatchArg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerLike, OperatorFunction } from '../types';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\n\n/**\n *\n * Emits an object containing the current value, and the time that has\n * passed between emitting the current value and the previous value, which is\n * calculated by using the provided `scheduler`'s `now()` method to retrieve\n * the current time at each emission, then calculating the difference. The `scheduler`\n * defaults to {@link asyncScheduler}, so by default, the `interval` will be in\n * milliseconds.\n *\n * Convert an Observable that emits items into one that\n * emits indications of the amount of time elapsed between those emissions.\n *\n * ![](timeinterval.png)\n *\n * ## Examples\n * Emit inteval between current value with the last value\n *\n * ```ts\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeInterval())\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * // NOTE: The values will never be this precise,\n * // intervals created with `interval` or `setInterval`\n * // are non-deterministic.\n *\n * // {value: 0, interval: 1000}\n * // {value: 1, interval: 1000}\n * // {value: 2, interval: 1000}\n * ```\n *\n * @param {SchedulerLike} [scheduler] Scheduler used to get the current time.\n * @return {Observable<{ interval: number, value: T }>} Observable that emit infomation about value and interval\n * @method timeInterval\n */\nexport function timeInterval(scheduler: SchedulerLike = async): OperatorFunction> {\n return (source: Observable) => defer(() => {\n return source.pipe(\n // TODO(benlesh): correct these typings.\n scan(\n ({ current }, value) => ({ value, current: scheduler.now(), last: current }),\n { current: scheduler.now(), value: undefined, last: undefined }\n ) as any,\n map>(({ current, last, value }) => new TimeInterval(value, current - last)),\n );\n });\n}\n\n// TODO(benlesh): make this an interface, export the interface, but not the implemented class,\n// there's no reason users should be manually creating this type.\n\n/**\n * @deprecated exposed API, use as interface only.\n */\nexport class TimeInterval {\n constructor(public value: T, public interval: number) {}\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { isDate } from '../util/isDate';\nimport { ObservableInput, OperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function timeoutWith(due: number | Date, withObservable: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n *\n * Errors if Observable does not emit a value in given time span, in case of which\n * subscribes to the second Observable.\n *\n * It's a version of `timeout` operator that let's you specify fallback Observable.\n *\n * ![](timeoutWith.png)\n *\n * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same,\n * still accepting as a first argument either a number or a Date, which control - respectively -\n * when values of source Observable should be emitted or when it should complete.\n *\n * The only difference is that it accepts a second, required parameter. This parameter\n * should be an Observable which will be subscribed when source Observable fails any timeout check.\n * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting\n * values from second Observable. Note that this fallback Observable is not checked for timeouts\n * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second\n * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that\n * stream completes, it completes as well.\n *\n * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided\n * here - as a third, optional parameter. It still is used to schedule timeout checks and -\n * as a consequence - when second Observable will be subscribed, since subscription happens\n * immediately after failing check.\n *\n * ## Example\n * Add fallback observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeoutWith } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const minutes = interval(60 * 1000);\n *\n * seconds.pipe(timeoutWith(900, minutes))\n * .subscribe(\n * value => console.log(value), // After 900ms, will start emitting `minutes`,\n * // since first value of `seconds` will not arrive fast enough.\n * err => console.log(err), // Would be called after 900ms in case of `timeout`,\n * // but here will never be called.\n * );\n * ```\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {Observable} withObservable Observable which will be subscribed if source fails timeout check.\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable\n * passed as a second parameter.\n * @method timeoutWith\n * @owner Observable\n */\nexport function timeoutWith(due: number | Date,\n withObservable: ObservableInput,\n scheduler: SchedulerLike = async): OperatorFunction {\n return (source: Observable) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\n\nclass TimeoutWithOperator implements Operator {\n constructor(private waitFor: number,\n private absoluteTimeout: boolean,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TimeoutWithSubscriber(\n subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TimeoutWithSubscriber extends SimpleOuterSubscriber {\n\n private action?: SchedulerAction>;\n\n constructor(destination: Subscriber,\n private absoluteTimeout: boolean,\n private waitFor: number,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n super(destination);\n this.scheduleTimeout();\n }\n\n private static dispatchTimeout(subscriber: TimeoutWithSubscriber): void {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n }\n\n private scheduleTimeout(): void {\n const { action } = this;\n if (action) {\n // Recycle the action if we've already scheduled one. All the production\n // Scheduler Actions mutate their state/delay time and return themeselves.\n // VirtualActions are immutable, so they create and return a clone. In this\n // case, we need to set the action reference to the most recent VirtualAction,\n // to ensure that's the one we clone from next time.\n this.action = (>> action.schedule(this, this.waitFor));\n } else {\n this.add(this.action = (>> this.scheduler.schedule>(\n TimeoutWithSubscriber.dispatchTimeout as any, this.waitFor, this\n )));\n }\n }\n\n protected _next(value: T): void {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.action = undefined;\n this.scheduler = null!;\n this.withObservable = null!;\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * Timeouts on Observable that doesn't emit values fast enough.\n *\n * ![](timeout.png)\n *\n * `timeout` operator accepts as an argument either a number or a Date.\n *\n * If number was provided, it returns an Observable that behaves like a source\n * Observable, unless there is a period of time where there is no value emitted.\n * So if you provide `100` as argument and first value comes after 50ms from\n * the moment of subscription, this value will be simply re-emitted by the resulting\n * Observable. If however after that 100ms passes without a second value being emitted,\n * stream will end with an error and source Observable will be unsubscribed.\n * These checks are performed throughout whole lifecycle of Observable - from the moment\n * it was subscribed to, until it completes or errors itself. Thus every value must be\n * emitted within specified period since previous value.\n *\n * If provided argument was Date, returned Observable behaves differently. It throws\n * if Observable did not complete before provided Date. This means that periods between\n * emission of particular values do not matter in this case. If Observable did not complete\n * before provided Date, source Observable will be unsubscribed. Other than that, resulting\n * stream behaves just as source Observable.\n *\n * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments)\n * when returned Observable will check if source stream emitted value or completed.\n *\n * ## Examples\n * Check if ticks are emitted within certain timespan\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeout(1100)) // Let's use bigger timespan to be safe,\n * // since `interval` might fire a bit later then scheduled.\n * .subscribe(\n * value => console.log(value), // Will emit numbers just as regular `interval` would.\n * err => console.log(err), // Will never be called.\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value), // Will never be called.\n * err => console.log(err), // Will emit error before even first value is emitted,\n * // since it did not arrive within 900ms period.\n * );\n * ```\n *\n * Use Date to check if Observable completed\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(\n * timeout(new Date(\"December 17, 2020 03:24:00\")),\n * )\n * .subscribe(\n * value => console.log(value), // Will emit values as regular `interval` would\n * // until December 17, 2020 at 03:24:00.\n * err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error,\n * // since Observable did not complete by then.\n * );\n * ```\n * @see {@link timeoutWith}\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source, unless timeout checks fail.\n * @method timeout\n * @owner Observable\n */\nexport function timeout(due: number | Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","\nimport { async } from '../scheduler/async';\nimport { OperatorFunction, SchedulerLike, Timestamp as TimestampInterface } from '../types';\nimport { map } from './map';\n\n/**\n * Attaches a timestamp to each item emitted by an observable indicating when it was emitted\n *\n * The `timestamp` operator maps the *source* observable stream to an object of type\n * `{value: T, timestamp: R}`. The properties are generically typed. The `value` property contains the value\n * and type of the *source* observable. The `timestamp` is generated by the schedulers `now` function. By\n * default it uses the *async* scheduler which simply returns `Date.now()` (milliseconds since 1970/01/01\n * 00:00:00:000) and therefore is of type `number`.\n *\n * ![](timestamp.png)\n *\n * ## Example\n *\n * In this example there is a timestamp attached to the documents click event.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { timestamp } from 'rxjs/operators';\n *\n * const clickWithTimestamp = fromEvent(document, 'click').pipe(\n * timestamp()\n * );\n *\n * // Emits data of type {value: MouseEvent, timestamp: number}\n * clickWithTimestamp.subscribe(data => {\n * console.log(data);\n * });\n * ```\n *\n * @param scheduler\n * @return {Observable>|WebSocketSubject|Observable}\n * @method timestamp\n * @owner Observable\n */\nexport function timestamp(scheduler: SchedulerLike = async): OperatorFunction> {\n return map((value: T) => new Timestamp(value, scheduler.now()));\n // return (source: Observable) => source.lift(new TimestampOperator(scheduler));\n}\n\nexport class Timestamp implements TimestampInterface {\n constructor(public value: T, public timestamp: number) {\n }\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\n\nfunction toArrayReducer(arr: T[], item: T, index: number) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * Get all values inside an array when the source completes\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { toArray, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * take(10),\n * toArray()\n * );\n *\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n *\n * ```\n* @return An array from an observable sequence.\n* @method toArray\n* @owner Observable\n*/\nexport function toArray(): OperatorFunction {\n return reduce(toArrayReducer, [] as T[]);\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { Subject } from '../Subject';\nimport { Subscriber } from '../Subscriber';\nimport { Operator } from '../Operator';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * It's like {@link buffer}, but emits a nested Observable\n * instead of an array.\n *\n * ![](window.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * ## Example\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { window, mergeAll, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const sec = interval(1000);\n * const result = clicks.pipe(\n * window(sec),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return {Observable>} An Observable of windows, which are\n * Observables emitting values of the source Observable.\n * @method window\n * @owner Observable\n */\nexport function window(windowBoundaries: Observable): OperatorFunction> {\n return function windowOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\n\nclass WindowOperator implements Operator> {\n\n constructor(private windowBoundaries: Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n const windowSubscriber = new WindowSubscriber(subscriber);\n const sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(innerSubscribe(this.windowBoundaries, new SimpleInnerSubscriber(windowSubscriber)));\n }\n return sourceSubscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends SimpleOuterSubscriber {\n\n private window: Subject = new Subject();\n\n constructor(destination: Subscriber>) {\n super(destination);\n destination.next(this.window);\n }\n\n notifyNext(): void {\n this.openWindow();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(): void {\n this._complete();\n }\n\n protected _next(value: T): void {\n this.window.next(value);\n }\n\n protected _error(err: any): void {\n this.window.error(err);\n this.destination.error!(err);\n }\n\n protected _complete(): void {\n this.window.complete();\n this.destination.complete!();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.window = null!;\n }\n\n private openWindow(): void {\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n const destination = this.destination;\n const newWindow = this.window = new Subject();\n destination.next!(newWindow);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowCount.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * ## Examples\n * Ignore every 3rd click event, starting from the first one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, map, mergeAll, skip } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(3),\n * map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Ignore every 3rd click event, starting from the third one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(2, 3),\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return {Observable>} An Observable of windows, which in turn\n * are Observable of values.\n * @method windowCount\n * @owner Observable\n */\nexport function windowCount(windowSize: number,\n startWindowEvery: number = 0): OperatorFunction> {\n return function windowCountOperatorFunction(source: Observable) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\n\nclass WindowCountOperator implements Operator> {\n\n constructor(private windowSize: number,\n private startWindowEvery: number) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowCountSubscriber extends Subscriber {\n private windows: Subject[] = [ new Subject() ];\n private count: number = 0;\n\n constructor(protected destination: Subscriber>,\n private windowSize: number,\n private startWindowEvery: number) {\n super(destination);\n destination.next(this.windows[0]);\n }\n\n protected _next(value: T) {\n const startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n const destination = this.destination;\n const windowSize = this.windowSize;\n const windows = this.windows;\n const len = windows.length;\n\n for (let i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n const c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n const window = new Subject();\n windows.push(window);\n destination.next(window);\n }\n }\n\n protected _error(err: any) {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n }\n\n protected _complete() {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n }\n\n protected _unsubscribe() {\n this.count = 0;\n this.windows = null;\n }\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerLike, SchedulerAction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable periodically\n * in time.\n *\n * It's like {@link bufferTime}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowTime.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable starts a new window periodically, as\n * determined by the `windowCreationInterval` argument. It emits each window\n * after a fixed timespan, specified by the `windowTimeSpan` argument. When the\n * source Observable completes or encounters an error, the output Observable\n * emits the current window and propagates the notification from the source\n * Observable. If `windowCreationInterval` is not provided, the output\n * Observable starts a new window when the previous window of duration\n * `windowTimeSpan` completes. If `maxWindowCount` is provided, each window\n * will emit at most fixed number of values. Window will complete immediately\n * after emitting last value and next one still will open as specified by\n * `windowTimeSpan` and `windowCreationInterval` arguments.\n *\n * ## Examples\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds start a window 1 second long, and emit at most 2 click events per window\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Same as example above but with maxWindowCount instead of take\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000, 2), // each window has still at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferTime}\n *\n * @param {number} windowTimeSpan The amount of time to fill each window.\n * @param {number} [windowCreationInterval] The interval at which to start new\n * windows.\n * @param {number} [maxWindowSize=Number.POSITIVE_INFINITY] Max number of\n * values each window can emit before completion.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine window boundaries.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowTime\n * @owner Observable\n */\nexport function windowTime(windowTimeSpan: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n maxWindowSize: number,\n scheduler?: SchedulerLike): OperatorFunction>;\n\nexport function windowTime(windowTimeSpan: number): OperatorFunction> {\n let scheduler: SchedulerLike = async;\n let windowCreationInterval: number = null;\n let maxWindowSize: number = Number.POSITIVE_INFINITY;\n\n if (isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n\n if (isScheduler(arguments[2])) {\n scheduler = arguments[2];\n } else if (isNumeric(arguments[2])) {\n maxWindowSize = Number(arguments[2]);\n }\n\n if (isScheduler(arguments[1])) {\n scheduler = arguments[1];\n } else if (isNumeric(arguments[1])) {\n windowCreationInterval = Number(arguments[1]);\n }\n\n return function windowTimeOperatorFunction(source: Observable) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\n\nclass WindowTimeOperator implements Operator> {\n\n constructor(private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowTimeSubscriber(\n subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler\n ));\n }\n}\n\ninterface CreationState {\n windowTimeSpan: number;\n windowCreationInterval: number;\n subscriber: WindowTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface TimeSpanOnlyState {\n window: CountedSubject;\n windowTimeSpan: number;\n subscriber: WindowTimeSubscriber;\n }\n\ninterface CloseWindowContext {\n action: SchedulerAction>;\n subscription: Subscription;\n}\n\ninterface CloseState {\n subscriber: WindowTimeSubscriber;\n window: CountedSubject;\n context: CloseWindowContext;\n}\n\nclass CountedSubject extends Subject {\n private _numberOfNextedValues: number = 0;\n\n next(value?: T): void {\n this._numberOfNextedValues++;\n super.next(value);\n }\n\n get numberOfNextedValues(): number {\n return this._numberOfNextedValues;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowTimeSubscriber extends Subscriber {\n private windows: CountedSubject[] = [];\n\n constructor(protected destination: Subscriber>,\n private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n\n const window = this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n const closeState: CloseState = { subscriber: this, window, context: null };\n const creationState: CreationState = { windowTimeSpan, windowCreationInterval, subscriber: this, scheduler };\n this.add(scheduler.schedule>(dispatchWindowClose, windowTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchWindowCreation, windowCreationInterval, creationState));\n } else {\n const timeSpanOnlyState: TimeSpanOnlyState = { subscriber: this, window, windowTimeSpan };\n this.add(scheduler.schedule>(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n }\n\n protected _next(value: T): void {\n const windows = this.windows;\n const len = windows.length;\n for (let i = 0; i < len; i++) {\n const window = windows[i];\n if (!window.closed) {\n window.next(value);\n if (window.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window);\n }\n }\n }\n }\n\n protected _error(err: any): void {\n const windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const windows = this.windows;\n while (windows.length > 0) {\n const window = windows.shift();\n if (!window.closed) {\n window.complete();\n }\n }\n this.destination.complete();\n }\n\n public openWindow(): CountedSubject {\n const window = new CountedSubject();\n this.windows.push(window);\n const destination = this.destination;\n destination.next(window);\n return window;\n }\n\n public closeWindow(window: CountedSubject): void {\n window.complete();\n const windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n }\n}\n\nfunction dispatchWindowTimeSpanOnly(this: SchedulerAction>, state: TimeSpanOnlyState): void {\n const { subscriber, windowTimeSpan, window } = state;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\n\nfunction dispatchWindowCreation(this: SchedulerAction>, state: CreationState): void {\n const { windowTimeSpan, subscriber, scheduler, windowCreationInterval } = state;\n const window = subscriber.openWindow();\n const action = this;\n let context: CloseWindowContext = { action, subscription: null };\n const timeSpanState: CloseState = { subscriber, window, context };\n context.subscription = scheduler.schedule>(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\n\nfunction dispatchWindowClose(state: CloseState): void {\n const { subscriber, window, context } = state;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowToggle.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * ## Example\n * Every other second, emit the click events from the next 500ms\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { windowToggle, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const result = clicks.pipe(\n * windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n * mergeAll()\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits (either `next` or `complete`), signals that the\n * associated window should complete.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowToggle\n * @owner Observable\n */\nexport function windowToggle(openings: Observable,\n closingSelector: (openValue: O) => Observable): OperatorFunction> {\n return (source: Observable) => source.lift(new WindowToggleOperator(openings, closingSelector));\n}\n\nclass WindowToggleOperator implements Operator> {\n\n constructor(private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowToggleSubscriber(\n subscriber, this.openings, this.closingSelector\n ));\n }\n}\n\ninterface WindowContext {\n window: Subject;\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowToggleSubscriber extends OuterSubscriber {\n private contexts: WindowContext[] = [];\n private openSubscription: Subscription;\n\n constructor(destination: Subscriber>,\n private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n super(destination);\n this.add(this.openSubscription = subscribeToResult(this, openings, openings as any));\n }\n\n protected _next(value: T) {\n const { contexts } = this;\n if (contexts) {\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n }\n\n protected _error(err: any) {\n\n const { contexts } = this;\n this.contexts = null;\n\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n\n while (++index < len) {\n const context = contexts[index];\n context.window.error(err);\n context.subscription.unsubscribe();\n }\n }\n\n super._error(err);\n }\n\n protected _complete() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.complete();\n context.subscription.unsubscribe();\n }\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.unsubscribe();\n context.subscription.unsubscribe();\n }\n }\n }\n\n notifyNext(outerValue: any, innerValue: any,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n\n if (outerValue === this.openings) {\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector(innerValue);\n } catch (e) {\n return this.error(e);\n }\n\n const window = new Subject();\n const subscription = new Subscription();\n const context = { window, subscription };\n this.contexts.push(context);\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n } else {\n (innerSubscription).context = context;\n subscription.add(innerSubscription);\n }\n\n this.destination.next(window);\n } else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n }\n\n notifyError(err: any): void {\n this.error(err);\n }\n\n notifyComplete(inner: Subscription): void {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(( inner).context));\n }\n }\n\n private closeWindow(index: number): void {\n if (index === -1) {\n return;\n }\n\n const { contexts } = this;\n const context = contexts[index];\n const { window, subscription } = context;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowWhen.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * ## Example\n * Emit only the first two clicks events in every window of [1-5] random seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { windowWhen, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowWhen(() => interval(1000 + Math.random() * 4000)),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowWhen\n * @owner Observable\n */\nexport function windowWhen(closingSelector: () => Observable): OperatorFunction> {\n return function windowWhenOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\n\nclass WindowOperator implements Operator> {\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends OuterSubscriber {\n private window?: Subject;\n private closingNotification?: Subscription;\n\n constructor(protected destination: Subscriber>,\n private closingSelector: () => Observable) {\n super(destination);\n this.openWindow();\n }\n\n notifyNext(_outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n protected _next(value: T): void {\n this.window!.next(value);\n }\n\n protected _error(err: any): void {\n this.window!.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n }\n\n protected _complete(): void {\n this.window!.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n }\n\n private unsubscribeClosingNotification(): void {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n }\n\n private openWindow(innerSub: InnerSubscriber | null = null): void {\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n\n const window = this.window = new Subject();\n this.destination.next(window);\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function withLatestFrom(project: (v1: T) => R): OperatorFunction;\nexport function withLatestFrom, R>(source2: O2, project: (v1: T, v2: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, R>(v2: O2, v3: O3, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom>(source2: O2): OperatorFunction]>;\nexport function withLatestFrom, O3 extends ObservableInput>(v2: O2, v3: O3): OperatorFunction, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput>(v2: O2, v3: O3, v4: O4): OperatorFunction, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[]): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[], project: (...values: Array) => R): OperatorFunction;\n\n/* tslint:enable:max-line-length */\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n * On every click event, emit an array with the latest timer event plus the click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { withLatestFrom } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom(...args: Array | ((...values: Array) => R)>): OperatorFunction {\n return (source: Observable) => {\n let project: any;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = []>args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\n\nclass WithLatestFromOperator implements Operator {\n constructor(private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WithLatestFromSubscriber extends OuterSubscriber {\n private values: any[];\n private toRespond: number[] = [];\n\n constructor(destination: Subscriber,\n private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n super(destination);\n const len = observables.length;\n this.values = new Array(len);\n\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n\n notifyComplete() {\n // noop\n }\n\n protected _next(value: T) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n } else {\n this.destination.next!(args);\n }\n }\n }\n\n private _tryProject(args: any[]) {\n let result: any;\n try {\n result = this.project!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { zip as zipStatic } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>, project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link zip}.\n */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction {\n return function zipOperatorFunction(source: Observable) {\n return source.lift.call(zipStatic(source, ...observables));\n };\n}","import { ZipOperator } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function zipAll(): OperatorFunction, T[]>;\nexport function zipAll(): OperatorFunction;\nexport function zipAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function zipAll(project: (...values: Array) => R): OperatorFunction;\n\nexport function zipAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new ZipOperator(project));\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","const util = require('util')\nconst EventEmitter = require('events/')\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n}\n\nmodule.exports = SafeEventEmitter\n\n\nfunction SafeEventEmitter() {\n EventEmitter.call(this)\n}\n\nutil.inherits(SafeEventEmitter, EventEmitter)\n\nSafeEventEmitter.prototype.emit = function (type) {\n // copied from https://github.com/Gozala/events/blob/master/events.js\n // modified lines are commented with \"edited:\"\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n // edited: using safeApply\n safeApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n // edited: using safeApply\n safeApply(listeners[i], this, args);\n }\n\n return true;\n}\n\nfunction safeApply(handler, context, args) {\n try {\n ReflectApply(handler, context, args)\n } catch (err) {\n // throw error after timeout so as not to interupt the stack\n setTimeout(() => {\n throw err\n })\n }\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\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\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","// treeify.js\n// Luke Plaster \n// https://github.com/notatestuser/treeify.js\n\n// do the universal module definition dance\n(function (root, factory) {\n\n if (typeof exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n root.treeify = factory();\n }\n\n}(this, function() {\n\n function makePrefix(key, last) {\n var str = (last ? '└' : '├');\n if (key) {\n str += '─ ';\n } else {\n str += '──┐';\n }\n return str;\n }\n\n function filterKeys(obj, hideFunctions) {\n var keys = [];\n for (var branch in obj) {\n // always exclude anything in the object's prototype\n if (!obj.hasOwnProperty(branch)) {\n continue;\n }\n // ... and hide any keys mapped to functions if we've been told to\n if (hideFunctions && ((typeof obj[branch])===\"function\")) {\n continue;\n }\n keys.push(branch);\n }\n return keys;\n }\n\n function growBranch(key, root, last, lastStates, showValues, hideFunctions, callback) {\n var line = '', index = 0, lastKey, circular, lastStatesCopy = lastStates.slice(0);\n\n if (lastStatesCopy.push([ root, last ]) && lastStates.length > 0) {\n // based on the \"was last element\" states of whatever we're nested within,\n // we need to append either blankness or a branch to our line\n lastStates.forEach(function(lastState, idx) {\n if (idx > 0) {\n line += (lastState[1] ? ' ' : '│') + ' ';\n }\n if ( ! circular && lastState[0] === root) {\n circular = true;\n }\n });\n\n // the prefix varies based on whether the key contains something to show and\n // whether we're dealing with the last element in this collection\n line += makePrefix(key, last) + key;\n\n // append values and the circular reference indicator\n showValues && (typeof root !== 'object' || root instanceof Date) && (line += ': ' + root);\n circular && (line += ' (circular ref.)');\n\n callback(line);\n }\n\n // can we descend into the next item?\n if ( ! circular && typeof root === 'object') {\n var keys = filterKeys(root, hideFunctions);\n keys.forEach(function(branch){\n // the last key is always printed with a different prefix, so we'll need to know if we have it\n lastKey = ++index === keys.length;\n\n // hold your breath for recursive action\n growBranch(branch, root[branch], lastKey, lastStatesCopy, showValues, hideFunctions, callback);\n });\n }\n };\n\n // --------------------\n\n var Treeify = {};\n\n // Treeify.asLines\n // --------------------\n // Outputs the tree line-by-line, calling the lineCallback when each one is available.\n\n Treeify.asLines = function(obj, showValues, hideFunctions, lineCallback) {\n /* hideFunctions and lineCallback are curried, which means we don't break apps using the older form */\n var hideFunctionsArg = typeof hideFunctions !== 'function' ? hideFunctions : false;\n growBranch('.', obj, false, [], showValues, hideFunctionsArg, lineCallback || hideFunctions);\n };\n\n // Treeify.asTree\n // --------------------\n // Outputs the entire tree, returning it as a string with line breaks.\n\n Treeify.asTree = function(obj, showValues, hideFunctions) {\n var tree = '';\n growBranch('.', obj, false, [], showValues, hideFunctions, function(line) {\n tree += line + '\\n';\n });\n return tree;\n };\n\n // --------------------\n\n return Treeify;\n\n}));\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh \n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nvar isTypedArray = require('is-typedarray').strict\n\nmodule.exports = function typedarrayToBuffer (arr) {\n if (isTypedArray(arr)) {\n // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer\n var buf = Buffer.from(arr.buffer)\n if (arr.byteLength !== arr.buffer.byteLength) {\n // Respect the \"view\", i.e. byteOffset and byteLength, without doing a copy\n buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)\n }\n return buf\n } else {\n // Pass through all other types to `Buffer.from`\n return Buffer.from(arr)\n }\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\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\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _construct.apply(null, arguments);\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n 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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n 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}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n 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}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n 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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\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 util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(issue.minimum)}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(issue.maximum)}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (typeof value.value !== \"undefined\" || pair.alwaysSet) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n return this._path.concat(this._key);\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n const error = new ZodError(ctx.common.issues);\n return { success: false, error };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n if (typeof ctx.data === \"undefined\") {\n return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };\n }\n return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[a-z][a-z0-9]*$/;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|([^-]([a-zA-Z0-9-]*\\.)+[a-zA-Z]{2,}))$/;\n// interface IsDateStringOptions extends StringDateOptions {\n/**\n * Match any configuration\n */\n// any?: boolean;\n// }\n// Adapted from https://stackoverflow.com/a/3143231\nconst datetimeRegex = (args) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`);\n }\n }\n else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`);\n }\n }\n else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`);\n }\n }\n};\nclass ZodString extends ZodType {\n constructor() {\n super(...arguments);\n this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));\n this.trim = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n }\n //\n );\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n datetime(options) {\n var _a;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////\n/////////////////////////////////////////\n////////// //////////\n////////// ZodObject //////////\n////////// //////////\n/////////////////////////////////////////\n/////////////////////////////////////////\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst AugmentFactory = (def) => (augmentation) => {\n return new ZodObject({\n ...def,\n shape: () => ({\n ...def.shape(),\n ...augmentation,\n }),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return ZodArray.create(deepPartialify(schema.element));\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n this.augment = AugmentFactory(this._def);\n this.extend = AugmentFactory(this._def);\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n // const mergedShape = objectUtil.mergeShapes(\n // this._def.shape(),\n // merging._def.shape()\n // );\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return Object.keys(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else {\n return null;\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n return OK(async (...args) => {\n const error = new ZodError([]);\n const parsedArgs = await this._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await fn(...parsedArgs);\n const parsedReturns = await this._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n return OK((...args) => {\n const parsedArgs = this._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = fn(...parsedArgs.data);\n const parsedReturns = this._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values) {\n return ZodEnum.create(values);\n }\n exclude(values) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data);\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed) => {\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n });\n }\n else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc\n // effect: RefinementEffect\n ) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n // if (base.status === \"aborted\") return INVALID;\n // if (base.status === \"dirty\") {\n // return { status: \"dirty\", value: base.value };\n // }\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n // if (base.status === \"aborted\") return INVALID;\n // if (base.status === \"dirty\") {\n // return { status: \"dirty\", value: base.value };\n // }\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const result = this._def.innerType._parse({\n data: ctx.data,\n path: ctx.path,\n parent: {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [], // don't collect issues from inner type\n },\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue(),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue(),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nconst custom = (check, params = {}, fatal) => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n if (!check(data)) {\n const p = typeof params === \"function\" ? params(data) : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal });\n }\n });\n return ZodAny.create();\n};\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params, true);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar mod = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n get objectUtil () { return objectUtil; },\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, mod as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, mod as z };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"4\":\"a26b22e5\",\"26\":\"3fde4f85\",\"28\":\"0da95d72\",\"44\":\"91464972\",\"110\":\"0c358e37\",\"119\":\"0b950a3f\",\"164\":\"b393b291\",\"199\":\"eab6f713\",\"236\":\"e48bd1f4\",\"247\":\"2c6ee8af\",\"286\":\"257257e6\",\"296\":\"71b01027\",\"328\":\"8d6e0c1e\",\"403\":\"3741f2fe\",\"404\":\"a658a24e\",\"506\":\"d360b578\",\"537\":\"bffe64fb\",\"565\":\"394026b9\",\"595\":\"4395f83e\",\"606\":\"15d23f07\",\"610\":\"5acb2b9b\",\"612\":\"bc1e57b8\",\"677\":\"c04c4898\",\"695\":\"ca73d122\",\"754\":\"a030d6eb\",\"777\":\"60d72363\",\"787\":\"2a0c2703\",\"792\":\"d0b60eb9\",\"876\":\"cb2babd2\",\"891\":\"7a5fa841\",\"908\":\"42f5be3e\",\"913\":\"499858be\",\"974\":\"2632ef2f\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"wallet_web3:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwallet_web3\"] = self[\"webpackChunkwallet_web3\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type MutationFormMethod = \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormMethod = \"get\" | MutationFormMethod;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n parentPath: number[] = [],\n allIds: Set = new Set()\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !allIds.has(id),\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n allIds.add(id);\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n children: route.children\n ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n : undefined,\n };\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n return (\n path\n .replace(\n /^:(\\w+)(\\??)/g,\n (_, key: PathParam, optional: string | undefined) => {\n let param = params[key];\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n return param;\n }\n )\n .replace(\n /\\/:(\\w+)(\\??)/g,\n (_, key: PathParam, optional: string | undefined) => {\n let param = params[key];\n if (optional === \"?\") {\n return param == null ? \"\" : `/${param}`;\n }\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n return `/${param}`;\n }\n )\n // Remove any optional markers from optional static segments\n .replace(/\\?/g, \"\")\n .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n const star = \"*\" as PathParam;\n\n if (params[star] == null) {\n // If no splat was provided, trim the trailing slash _unless_ it's\n // the entire path\n return str === \"/*\" ? \"/\" : \"\";\n }\n\n // Apply the splat\n return `${prefix}${params[star]}`;\n })\n );\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging @remix-run/router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n} from \"./history\";\nimport type {\n DataResult,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n MutationFormMethod,\n ShouldRevalidateFunction,\n} from \"./utils\";\nimport {\n DeferredData,\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n warning,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n basename?: string;\n routes: AgnosticRouteObject[];\n history: History;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: FormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n match: AgnosticDataRouteMatch;\n matches: AgnosticDataRouteMatch[];\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(init.routes);\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n !initialMatches.some((m) => m.route.loader) || init.hydrationData != null;\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n for (let [key] of blockerFunctions) {\n deleteBlocker(key);\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers: new Map(state.blockers),\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(to, opts);\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.blockers) });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(dataRoutes, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a
which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission\n ? submission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n pendingActionData,\n pendingError,\n fetchLoadMatches\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let matches = matchRoutes(dataRoutes, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(href, opts, true);\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path, match, matches });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n\n nextLocation,\n abortController.signal\n );\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(dataRoutes, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n { [match.route.id]: actionResult.data },\n undefined, // No need to send through errors since we short circuit above\n fetchLoadMatches\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n router.basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let newOrigin = init.history.createURL(redirect.location).origin;\n if (window.location.origin !== newOrigin) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\"loader\", request, match, matches, router.basename)\n ),\n ...fetchersToLoad.map((f) =>\n callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n router.basename\n )\n ),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.blockers) });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: {\n basename?: string;\n }\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(routes);\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\" && method !== \"options\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !routeMatch?.route.loader) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter((m) => m.route.loader);\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n submission = {\n formMethod: opts.formMethod || \"get\",\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n pendingActionData?: RouteData,\n pendingError?: RouteData,\n fetchLoadMatches?: Map\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n defaultShouldRevalidate ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches &&\n fetchLoadMatches.forEach((f, key) => {\n if (!matches.some((m) => m.route.id === f.routeId)) {\n // This fetcher is not going to be present in the subsequent render so\n // there's no need to revalidate it\n return;\n } else if (cancelledFetcherLoads.includes(key)) {\n // This fetcher was cancelled from a prior action submission - force reload\n revalidatingFetchers.push({ key, ...f });\n } else {\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let shouldRevalidate = shouldRevalidateLoader(f.match, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({ key, ...f });\n }\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise {\n let resultType;\n let result;\n\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n let onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n try {\n let handler = match.route[type];\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!isStaticRequest) {\n // Strip off the protocol+origin for same-origin absolute redirects.\n // If this is a static reques, we can let it go back to the browser\n // as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n if (url.origin === currentUrl.origin) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (result instanceof DeferredData) {\n return { type: ResultType.deferred, deferredData: result };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, value instanceof File ? value.name : value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined) {\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod {\n return validRequestMethods.has(method as FormMethod);\n}\n\nfunction isMutationMethod(method?: string): method is MutationFormMethod {\n return validMutationMethods.has(method as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own \n errorElement props on \n <Route>\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n match.route.errorElement\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement = dataRouterState\n ? match.route.errorElement || \n : null;\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => (\n \n {error\n ? errorElement\n : match.route.element !== undefined\n ? match.route.element\n : outlet}\n \n );\n // Only wrap in an error boundary within data router usages when we have an\n // errorElement on this route. Otherwise let it bubble up to an ancestor\n // errorElement\n return dataRouterState && (match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router } = useDataRouterContext(DataRouterHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n return blocker;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n invariant,\n parsePath,\n stripBasename,\n warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n () => router.state,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n () => router.state\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a