{"version":3,"file":"static/js/main.7392068d.js","mappings":"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A,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN7C,IAAK,CACHphB,IAAK,EACLikB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEA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A,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAGIksH,EAAqCnsH,EAAOC,KAAK,CAErD,GACA,IACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAGFnK,EAAAA,iBAA2B,SACzB8pB,EACAE,EACA2uB,QAAA,IAAAA,IAAAA,GAAA,GAEA,IAAMppB,EAASrlB,EAAOC,KACpBwuC,EAAay9E,EAAmCC,GAIlD,OAFAvsG,EAAW5d,KAAKqjB,EAAQopB,EAAa,EAAI,GACzC3uB,EAAU9d,KAAKqjB,EAAQopB,EAAa,IAAM,KACn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M,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAE1L,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,GAAM,GAAM,EAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,IAAM,GAAM,EAAM,GAAM,EAExgC,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,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,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,IACvH,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,QAAQ,UAC7H,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,UACzI,IAAIA,YAAY,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,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G,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAA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MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,QAGpBr2B,EAAQy3D,MAAQtrD,OAAOkqB,OAAO,CAC5B,EAAK,WAGL,GAAM,OACN,GAAM,WACN,GAAM,WACN,GAAM,eACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,YACN,GAAM,YACN,GAAM,aACN,GAAM,aACN,GAAM,aACN,GAAM,aAEN,GAAM,cACN,GAAM,aAEN,IAAM,MACN,IAAM,MAGN,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cAGR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,KAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,mBAGVr2B,EAAQyhJ,eAAiBt1I,OAAOkqB,OAAO,CACrC,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GAEN,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,KAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GAC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","sources":["../node_modules/@ethereumjs/common/src/chains/index.ts","../node_modules/@ethereumjs/common/src/eips/index.ts","../node_modules/@ethereumjs/common/src/hardforks/index.ts","../node_modules/@ethereumjs/common/src/index.ts","../node_modules/@ethereumjs/common/node_modules/bn.js/lib/bn.js","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/account.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/address.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/constants.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/externals.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/hash.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/index.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/internal.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/object.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/signature.ts","../node_modules/@ethereumjs/common/node_modules/ethereumjs-util/src/types.ts","../node_modules/@ethereumjs/tx/src/baseTransaction.ts","../node_modules/@ethereumjs/tx/src/eip1559Transaction.ts","../node_modules/@ethereumjs/tx/src/eip2930Transaction.ts","../node_modules/@ethereumjs/tx/src/index.ts","../node_modules/@ethereumjs/tx/src/legacyTransaction.ts","../node_modules/@ethereumjs/tx/src/transactionFactory.ts","../node_modules/@ethereumjs/tx/src/types.ts","../node_modules/@ethereumjs/tx/src/util.ts","../node_modules/@ethereumjs/tx/node_modules/bn.js/lib/bn.js","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/account.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/address.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/constants.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/externals.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/hash.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/index.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/internal.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/object.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/signature.ts","../node_modules/@ethereumjs/tx/node_modules/ethereumjs-util/src/types.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/bignumber/node_modules/bn.js/lib/bn.js","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.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/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/node_modules/bn.js/lib/bn.js","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/strings/src.ts/_version.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/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../index.ts","../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/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/socket-transport/node_modules/ws/browser.js","../node_modules/@walletconnect/utils/node_modules/bn.js/lib/bn.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/asn1.js/node_modules/bn.js/lib/bn.js","../node_modules/assert/build/assert.js","../node_modules/assert/build/internal/assert/assertion_error.js","../node_modules/assert/build/internal/errors.js","../node_modules/assert/build/internal/util/comparisons.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/async-mutex/node_modules/tslib/tslib.es6.js","../node_modules/async/asyncify.js","../node_modules/async/eachLimit.js","../node_modules/async/eachOf.js","../node_modules/async/eachOfLimit.js","../node_modules/async/eachSeries.js","../node_modules/async/internal/breakLoop.js","../node_modules/async/internal/doLimit.js","../node_modules/async/internal/doParallel.js","../node_modules/async/internal/eachOfLimit.js","../node_modules/async/internal/getIterator.js","../node_modules/async/internal/initialParams.js","../node_modules/async/internal/iterator.js","../node_modules/async/internal/map.js","../node_modules/async/internal/once.js","../node_modules/async/internal/onlyOnce.js","../node_modules/async/internal/parallel.js","../node_modules/async/internal/setImmediate.js","../node_modules/async/internal/slice.js","../node_modules/async/internal/withoutIndex.js","../node_modules/async/internal/wrapAsync.js","../node_modules/async/map.js","../node_modules/async/parallel.js","../node_modules/async/waterfall.js","../node_modules/base-x/src/index.js","../node_modules/base64-js/index.js","../node_modules/bech32/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/brorand/index.js","../node_modules/browserify-aes/aes.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/index.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/browserify-des/modes.js","../node_modules/browserify-rsa/index.js","../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../node_modules/buffer-xor/index.js","../node_modules/buffer/index.js","../node_modules/builtin-status-codes/browser.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/cids/node_modules/buffer/index.js","../node_modules/cids/node_modules/multibase/src/base.js","../node_modules/cids/node_modules/multibase/src/base16.js","../node_modules/cids/node_modules/multibase/src/base32.js","../node_modules/cids/node_modules/multibase/src/base64.js","../node_modules/cids/node_modules/multibase/src/constants.js","../node_modules/cids/node_modules/multibase/src/index.js","../node_modules/cids/node_modules/multicodec/src/constants.js","../node_modules/cids/node_modules/multicodec/src/index.js","../node_modules/cids/node_modules/multicodec/src/int-table.js","../node_modules/cids/node_modules/multicodec/src/print.js","../node_modules/cids/node_modules/multicodec/src/util.js","../node_modules/cids/node_modules/multicodec/src/varint-table.js","../node_modules/cids/src/cid-util.js","../node_modules/cids/src/index.js","../node_modules/cipher-base/index.js","../node_modules/class-is/index.js","../node_modules/classnames/index.js","../node_modules/content-hash/src/helpers.js","../node_modules/content-hash/src/index.js","../node_modules/content-hash/src/profiles.js","../node_modules/cookiejar/cookiejar.js","../node_modules/copy-to-clipboard/index.js","../node_modules/crc-32/crc32.js","../node_modules/create-ecdh/browser.js","../node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","../node_modules/create-hash/browser.js","../node_modules/create-hash/md5.js","../node_modules/create-hmac/browser.js","../node_modules/create-hmac/legacy.js","../node_modules/crypto-browserify/index.js","../node_modules/decode-uri-component/index.js","../node_modules/define-properties/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/des.js/lib/des/des.js","../node_modules/des.js/lib/des/ede.js","../node_modules/des.js/lib/des/utils.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/utils.js","../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../node_modules/es5-ext/global.js","../node_modules/es6-object-assign/index.js","../node_modules/eth-block-tracker/src/base.js","../node_modules/eth-block-tracker/src/polling.js","../node_modules/eth-ens-namehash/index.js","../node_modules/eth-ens-namehash/node_modules/js-sha3/src/sha3.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","../../src/classes.ts","../../src/error-constants.ts","../../src/errors.ts","../../src/index.ts","../../src/utils.ts","../../src/JsonRpcEngine.ts","../../src/createAsyncMiddleware.ts","../../src/createScaffoldMiddleware.ts","../../src/getUniqueId.ts","../../src/idRemapMiddleware.ts","../../src/mergeMiddleware.ts","../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/block-cache.js","../node_modules/eth-json-rpc-middleware/cache-utils.js","../node_modules/eth-json-rpc-middleware/scaffold.js","../node_modules/eth-lib/lib/account.js","../node_modules/eth-lib/lib/array.js","../node_modules/eth-lib/lib/bytes.js","../node_modules/eth-lib/lib/hash.js","../node_modules/eth-lib/lib/nat.js","../node_modules/eth-lib/lib/rlp.js","../node_modules/eth-lib/node_modules/bn.js/lib/bn.js","../node_modules/eth-query/index.js","../node_modules/eth-sig-util/index.js","../node_modules/ethereum-bloom-filters/dist/index.js","../node_modules/ethereum-bloom-filters/dist/utils.js","../node_modules/ethereum-cryptography/src/hash-utils.ts","../node_modules/ethereum-cryptography/src/keccak.ts","../node_modules/ethereum-cryptography/src/random.ts","../node_modules/ethereum-cryptography/src/secp256k1.ts","../node_modules/ethereumjs-abi/index.js","../node_modules/ethereumjs-abi/lib/index.js","../node_modules/ethereumjs-abi/node_modules/bn.js/lib/bn.js","../../src/account.ts","../../src/bytes.ts","../../src/constants.ts","../../src/hash.ts","../../src/object.ts","../../src/secp256k1v3-adapter.ts","../../src/secp256k1v3-lib/der.ts","../../src/secp256k1v3-lib/index.ts","../../src/signature.ts","../node_modules/ethereumjs-tx/es5/index.js","../node_modules/ethereumjs-util/dist/index.js","../node_modules/ethereumjs-util/dist/secp256k1-adapter.js","../node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","../node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","../node_modules/ethereumjs-util/node_modules/bn.js/lib/bn.js","../node_modules/ethjs-unit/lib/index.js","../node_modules/ethjs-unit/node_modules/bn.js/lib/bn.js","../node_modules/ethjs-util/lib/index.js","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/evp_bytestokey/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/global/window.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/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-base/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/hmac-drbg/lib/hmac-drbg.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/https-browserify/index.js","../node_modules/idna-uts46-hx/idna-map.js","../node_modules/idna-uts46-hx/node_modules/punycode/punycode.js","../node_modules/idna-uts46-hx/uts46.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-function/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-hex-prefixed/src/index.js","../node_modules/is-nan/implementation.js","../node_modules/is-nan/index.js","../node_modules/is-nan/polyfill.js","../node_modules/is-nan/shim.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","../node_modules/json-rpc-engine/src/createAsyncMiddleware.js","../node_modules/json-rpc-engine/src/createScaffoldMiddleware.js","../node_modules/json-rpc-random-id/index.js","../node_modules/json-stable-stringify/index.js","../node_modules/jsonify/index.js","../node_modules/jsonify/lib/parse.js","../node_modules/jsonify/lib/stringify.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/lodash/_Symbol.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/noop.js","../node_modules/lodash/stubFalse.js","../node_modules/md5.js/index.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","../node_modules/minimalistic-assert/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/multibase/node_modules/buffer/index.js","../node_modules/multibase/src/base.js","../node_modules/multibase/src/base16.js","../node_modules/multibase/src/base32.js","../node_modules/multibase/src/base64.js","../node_modules/multibase/src/constants.js","../node_modules/multibase/src/index.js","../node_modules/multicodec/src/constants.js","../node_modules/multicodec/src/index.js","../node_modules/multicodec/src/int-table.js","../node_modules/multicodec/src/print.js","../node_modules/multicodec/src/util.js","../node_modules/multicodec/src/varint-table.js","../node_modules/multihashes/node_modules/buffer/index.js","../node_modules/multihashes/src/constants.js","../node_modules/multihashes/src/index.js","../node_modules/number-to-bn/node_modules/bn.js/lib/bn.js","../node_modules/number-to-bn/src/index.js","../node_modules/object-assign/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/index.js","../node_modules/object-is/polyfill.js","../node_modules/object-is/shim.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/oboe/dist/oboe-browser.js","../node_modules/os-browserify/main.js","../node_modules/parse-asn1/asn1.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/parse-asn1/index.js","../node_modules/parse-headers/parse-headers.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/pify/index.js","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/component.js","../node_modules/preact/src/render.js","../node_modules/preact/src/create-context.js","../node_modules/preact/src/util.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/diff/children.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/diff/index.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/preact/compat/src/util.js","../node_modules/preact/compat/src/PureComponent.js","../node_modules/preact/compat/src/memo.js","../node_modules/preact/compat/src/forwardRef.js","../node_modules/preact/compat/src/Children.js","../node_modules/preact/compat/src/suspense.js","../node_modules/preact/compat/src/suspense-list.js","../node_modules/preact/compat/src/portals.js","../node_modules/preact/compat/src/render.js","../node_modules/preact/compat/src/events.js","../node_modules/preact/compat/src/index.js","../node_modules/process/browser.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/withPublic.js","../node_modules/public-encrypt/xor.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/query-string/index.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/randombytes/browser.js","../node_modules/randomfill/browser.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/node_modules/string_decoder/lib/string_decoder.js","../node_modules/readable-stream/readable-browser.js","../node_modules/ripemd160/index.js","../node_modules/rlp/src/index.ts","../node_modules/rlp/node_modules/bn.js/lib/bn.js","../node_modules/safe-buffer/index.js","../node_modules/safe-event-emitter/index.js","../node_modules/safer-buffer/safer.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/scrypt-js/scrypt.js","../node_modules/secp256k1/elliptic.js","../node_modules/secp256k1/lib/elliptic.js","../node_modules/secp256k1/lib/index.js","../node_modules/semaphore/lib/semaphore.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/split-on-first/index.js","../node_modules/stream-browserify/index.js","../node_modules/stream-http/index.js","../node_modules/stream-http/lib/capability.js","../node_modules/stream-http/lib/request.js","../node_modules/stream-http/lib/response.js","../node_modules/strict-uri-encode/index.js","../node_modules/string_decoder/index.js","../node_modules/strip-hex-prefix/src/index.js","../node_modules/swarm-js/lib/api-browser.js","../node_modules/swarm-js/lib/pick.js","../node_modules/swarm-js/lib/swarm-hash.js","../node_modules/swarm-js/lib/swarm.js","../node_modules/swarm-js/node_modules/eth-lib/lib/array.js","../node_modules/swarm-js/node_modules/eth-lib/lib/bytes.js","../node_modules/swarm-js/node_modules/eth-lib/lib/hash.js","../node_modules/toggle-selection/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/url-set-query/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/url/util.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/utf8/utf8.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/uuid/index.js","../node_modules/uuid/lib/bytesToUuid.js","../node_modules/uuid/lib/rng-browser.js","../node_modules/uuid/v1.js","../node_modules/uuid/v4.js","../node_modules/varint/decode.js","../node_modules/varint/encode.js","../node_modules/varint/index.js","../node_modules/varint/length.js","../node_modules/web3-bzz/lib/index.js","../node_modules/web3-core-helpers/lib/errors.js","../node_modules/web3-core-helpers/lib/formatters.js","../node_modules/web3-core-helpers/lib/index.js","../node_modules/web3-core-method/lib/index.js","../node_modules/web3-core-promievent/lib/index.js","../node_modules/web3-core-promievent/node_modules/eventemitter3/index.js","../node_modules/web3-core-requestmanager/lib/batch.js","../node_modules/web3-core-requestmanager/lib/givenProvider.js","../node_modules/web3-core-requestmanager/lib/index.js","../node_modules/web3-core-requestmanager/lib/jsonrpc.js","../node_modules/web3-core-subscriptions/lib/index.js","../node_modules/web3-core-subscriptions/lib/subscription.js","../node_modules/web3-core-subscriptions/node_modules/eventemitter3/index.js","../node_modules/web3-core/lib/extend.js","../node_modules/web3-core/lib/index.js","../node_modules/web3-eth-abi/lib/index.js","../../src.ts/_version.ts","../../src.ts/fragments.ts","../../src.ts/coders/abstract-coder.ts","../../src.ts/coders/address.ts","../../src.ts/coders/anonymous.ts","../../src.ts/coders/array.ts","../../src.ts/coders/boolean.ts","../../src.ts/coders/bytes.ts","../../src.ts/coders/fixed-bytes.ts","../../src.ts/coders/null.ts","../../src.ts/coders/number.ts","../../src.ts/coders/string.ts","../../src.ts/coders/tuple.ts","../../src.ts/abi-coder.ts","../../src.ts/interface.ts","../node_modules/web3-eth-accounts/lib/index.js","../node_modules/web3-eth-accounts/node_modules/bn.js/lib/bn.js","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/account.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/address.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/constants.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/externals.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/hash.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/index.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/internal.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/object.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/signature.ts","../node_modules/web3-eth-accounts/node_modules/ethereumjs-util/src/types.ts","../node_modules/web3-eth-contract/lib/index.js","../node_modules/web3-eth-ens/lib/ENS.js","../node_modules/web3-eth-ens/lib/config.js","../node_modules/web3-eth-ens/lib/contracts/Registry.js","../node_modules/web3-eth-ens/lib/index.js","../node_modules/web3-eth-ens/lib/lib/ResolverMethodHandler.js","../node_modules/web3-eth-ens/lib/lib/contentHash.js","../node_modules/web3-eth-ens/lib/resources/ABI/Registry.js","../node_modules/web3-eth-ens/lib/resources/ABI/Resolver.js","../node_modules/web3-eth-iban/lib/index.js","../node_modules/web3-eth-iban/node_modules/bn.js/lib/bn.js","../node_modules/web3-eth-personal/lib/index.js","../node_modules/web3-eth/lib/getNetworkType.js","../node_modules/web3-eth/lib/index.js","../node_modules/web3-net/lib/index.js","../node_modules/web3-provider-engine/index.js","../node_modules/web3-provider-engine/subproviders/cache.js","../node_modules/web3-provider-engine/subproviders/filters.js","../node_modules/web3-provider-engine/subproviders/fixture.js","../node_modules/web3-provider-engine/subproviders/hooked-wallet.js","../node_modules/web3-provider-engine/subproviders/json-rpc-engine-middleware.js","../node_modules/web3-provider-engine/subproviders/nonce-tracker.js","../node_modules/web3-provider-engine/subproviders/subprovider.js","../node_modules/web3-provider-engine/subproviders/subscriptions.js","../node_modules/web3-provider-engine/util/create-payload.js","../node_modules/web3-provider-engine/util/estimate-gas.js","../node_modules/web3-provider-engine/util/random-id.js","../node_modules/web3-provider-engine/util/rpc-cache-utils.js","../node_modules/web3-provider-engine/util/stoplight.js","../node_modules/web3-providers-http/lib/index.js","../node_modules/web3-providers-ipc/lib/index.js","../node_modules/web3-providers-ws/lib/helpers.js","../node_modules/web3-providers-ws/lib/index.js","../node_modules/web3-providers-ws/node_modules/eventemitter3/index.js","../node_modules/web3-shh/lib/index.js","../node_modules/web3-utils/lib/index.js","../node_modules/web3-utils/lib/soliditySha3.js","../node_modules/web3-utils/lib/utils.js","../node_modules/web3-utils/node_modules/bn.js/lib/bn.js","../node_modules/web3-utils/node_modules/ethereumjs-util/src/account.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/address.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/bytes.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/constants.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/externals.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/hash.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/helpers.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/index.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/internal.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/object.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/signature.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/src/types.ts","../node_modules/web3-utils/node_modules/ethereumjs-util/node_modules/bn.js/lib/bn.js","../node_modules/web3/lib/index.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.js","../node_modules/which-typed-array/index.js","../node_modules/xhr-request/index.js","../node_modules/xhr-request/lib/ensure-header.js","../node_modules/xhr-request/lib/normalize-response.js","../node_modules/xhr-request/lib/request-browser.js","../node_modules/xhr-request/node_modules/query-string/index.js","../node_modules/xhr-request/node_modules/strict-uri-encode/index.js","../node_modules/xhr/index.js","../../errors.ts","../../index.ts","../../progress-event.ts","../../xml-http-request-event-target.ts","../../xml-http-request-upload.ts","../../xml-http-request.ts","../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/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.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/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.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","../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/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.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/@remix-run/router/history.ts","../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/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../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/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","types/enums/routeNames.ts","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack://eva-staking-test/./src/modules/Staking/styles.module.scss?fa70","assets/svgComponents/ArrowIcon.tsx","utils/timer.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://eva-staking-test/./src/UI-core/Drawer/styles.module.scss?b160","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/setRef.js","../node_modules/@mui/utils/esm/useForkRef.js","../node_modules/@mui/utils/esm/ownerDocument.js","../node_modules/@mui/utils/esm/useEnhancedEffect.js","../node_modules/@mui/utils/esm/useEventCallback.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@mui/base/Portal/Portal.js","../node_modules/@mui/utils/esm/ownerWindow.js","../node_modules/@mui/base/Modal/ModalManager.js","../node_modules/@mui/utils/esm/getScrollbarSize.js","../node_modules/@mui/base/FocusTrap/FocusTrap.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/base/Modal/modalClasses.js","../node_modules/@mui/base/utils/isHostComponent.js","../node_modules/@mui/base/utils/appendOwnerState.js","../node_modules/@mui/base/utils/extractEventHandlers.js","../node_modules/@mui/base/utils/omitEventHandlers.js","../node_modules/@mui/base/utils/resolveComponentProps.js","../node_modules/@mui/base/utils/useSlotProps.js","../node_modules/@mui/base/utils/mergeSlotProps.js","../node_modules/@mui/base/utils/ClassNameConfigurator.js","../node_modules/@mui/base/Modal/Modal.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/serialize/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.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-c39617d8.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/@mui/utils/esm/deepmerge.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/capitalize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/propsToClassKey.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/utils/esm/resolveProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/utils/esm/debounce.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/Slide/Slide.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/Drawer/drawerClasses.js","../node_modules/@mui/material/Drawer/Drawer.js","assets/svgComponents/CloseIcon.tsx","UI-core/Drawer/inex.tsx","webpack://eva-staking-test/./src/modules/Raffles/styles.module.scss?c398","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","types/enums/index.ts","assets/svgComponents/ClockIcon.tsx","assets/svgComponents/RewardIcon.tsx","assets/svgComponents/BlueSmile.tsx","constants/mockups.tsx","assets/svgComponents/TwitterIcon.tsx","assets/svgComponents/DiscordIcon.tsx","assets/svgComponents/TgIcon.tsx","assets/svgComponents/GithubIcon.tsx","webpack://eva-staking-test/./src/UI-core/Buttton/styles.module.scss?902e","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","UI-core/Buttton/index.tsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","api/index.tsx","../node_modules/bignumber.js/bignumber.mjs","utils/network.ts","utils/bigNumber.ts","modules/Raffles/components/RaffleItem.tsx","../../src/encoding.ts","../../src/constants.ts","../../src/url.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/@mui/material/Alert/alertClasses.js","../node_modules/@mui/utils/esm/useIsFocusVisible.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Alert/Alert.js","../node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js","../node_modules/@mui/material/SnackbarContent/SnackbarContent.js","../node_modules/@mui/material/Snackbar/snackbarClasses.js","../node_modules/@mui/material/Snackbar/Snackbar.js","../node_modules/@mui/base/useSnackbar/useSnackbar.js","modules/Toaster/ToasterContext.tsx","hooks/useHandleError.ts","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/index.mjs","stores/appStore.ts","hooks/useWeb3Provider.ts","contexts/Web3ProviderContext.tsx","constants/raffles.ts","modules/Staking/store.ts","modules/Raffles/RafflesView.tsx","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@mui/base/Popper/popperClasses.js","../node_modules/@mui/base/Popper/Popper.js","../node_modules/@mui/material/Popper/Popper.js","../node_modules/@mui/utils/esm/useId.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/utils/esm/useControlled.js","../node_modules/@mui/material/Tooltip/tooltipClasses.js","../node_modules/@mui/material/Tooltip/Tooltip.js","utils/index.ts","modules/Staking/components/InfoBlock.tsx","assets/svgComponents/WithdrawIcon.tsx","assets/svgComponents/MetamaskIcon.tsx","webpack://eva-staking-test/./src/modules/Withdrawal/styles.module.scss?e6da","webpack://eva-staking-test/./src/UI-core/SuccessStakeUnstake/styles.module.scss?c593","assets/svgComponents/SadSmile.tsx","modules/Withdrawal/components/IsSureToWithdraw.tsx","contracts/tenetStaking/index.ts","contracts/tenetCalculator/index.ts","../node_modules/zustand/esm/shallow.mjs","../node_modules/@ethersproject/abi/src.ts/_version.ts","../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts","../node_modules/@ethersproject/hash/src.ts/id.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/fragments.ts","../node_modules/@ethersproject/abi/src.ts/abi-coder.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/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/typed-data.ts","../node_modules/@ethersproject/base64/src.ts/browser-base64.ts","../node_modules/@ethersproject/web/src.ts/_version.ts","../node_modules/@ethersproject/web/src.ts/browser-geturl.ts","../node_modules/@ethersproject/web/src.ts/index.ts","../node_modules/@ethersproject/providers/src.ts/_version.ts","../node_modules/@ethersproject/basex/src.ts/index.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/networks/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/index.ts","../node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts","../node_modules/@ethersproject/sha2/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/formatter.ts","../node_modules/@ethersproject/constants/src.ts/addresses.ts","../node_modules/@ethersproject/providers/src.ts/base-provider.ts","../node_modules/@ethersproject/constants/src.ts/hashes.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts","hooks/useEthersContract.ts","hooks/useMulticall.ts","contracts/multicalls/index.ts","hooks/useContract.tsx","../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts","../node_modules/@ethersproject/units/src.ts/index.ts","../node_modules/@ethersproject/units/src.ts/_version.ts","utils/time.ts","contracts/erc20/index.tsx","hooks/useGetUserBalance.ts","modules/Staking/iteractor.ts","modules/Withdrawal/ineractor.ts","modules/Withdrawal/components/StakingItem.tsx","assets/svgComponents/SuccessSmile.tsx","UI-core/SuccessStakeUnstake/index.tsx","modules/Withdrawal/WithdrawalView.tsx","constants/index.tsx","modules/Staking/components/StakeAmountBlock.tsx","utils/validationSum.tsx","modules/Staking/StakingView.tsx","pages/styles.module.scss","webpack://eva-staking-test/./src/modules/Rewards/styles.module.scss?fc98","hooks/useWindowSize.ts","../node_modules/ssr-window/ssr-window.esm.js","../node_modules/swiper/shared/get-support.js","../node_modules/swiper/shared/get-device.js","../node_modules/swiper/shared/get-browser.js","../node_modules/swiper/shared/utils.js","../node_modules/swiper/core/events-emitter.js","../node_modules/swiper/shared/process-lazy-preloader.js","../node_modules/swiper/core/update/index.js","../node_modules/swiper/core/update/updateSize.js","../node_modules/swiper/core/update/updateSlides.js","../node_modules/swiper/core/update/updateAutoHeight.js","../node_modules/swiper/core/update/updateSlidesOffset.js","../node_modules/swiper/core/update/updateSlidesProgress.js","../node_modules/swiper/core/update/updateProgress.js","../node_modules/swiper/core/update/updateSlidesClasses.js","../node_modules/swiper/core/update/updateActiveIndex.js","../node_modules/swiper/core/update/updateClickedSlide.js","../node_modules/swiper/core/translate/index.js","../node_modules/swiper/core/translate/getTranslate.js","../node_modules/swiper/core/translate/setTranslate.js","../node_modules/swiper/core/translate/minTranslate.js","../node_modules/swiper/core/translate/maxTranslate.js","../node_modules/swiper/core/translate/translateTo.js","../node_modules/swiper/core/transition/transitionEmit.js","../node_modules/swiper/core/transition/index.js","../node_modules/swiper/core/transition/setTransition.js","../node_modules/swiper/core/transition/transitionStart.js","../node_modules/swiper/core/transition/transitionEnd.js","../node_modules/swiper/core/slide/index.js","../node_modules/swiper/core/slide/slideTo.js","../node_modules/swiper/core/slide/slideToLoop.js","../node_modules/swiper/core/slide/slideNext.js","../node_modules/swiper/core/slide/slidePrev.js","../node_modules/swiper/core/slide/slideReset.js","../node_modules/swiper/core/slide/slideToClosest.js","../node_modules/swiper/core/slide/slideToClickedSlide.js","../node_modules/swiper/core/loop/index.js","../node_modules/swiper/core/loop/loopCreate.js","../node_modules/swiper/core/loop/loopFix.js","../node_modules/swiper/core/loop/loopDestroy.js","../node_modules/swiper/core/events/onTouchStart.js","../node_modules/swiper/core/events/onTouchMove.js","../node_modules/swiper/core/events/onTouchEnd.js","../node_modules/swiper/core/events/onResize.js","../node_modules/swiper/core/events/onClick.js","../node_modules/swiper/core/events/onScroll.js","../node_modules/swiper/core/events/onLoad.js","../node_modules/swiper/core/events/index.js","../node_modules/swiper/core/breakpoints/setBreakpoint.js","../node_modules/swiper/core/breakpoints/index.js","../node_modules/swiper/core/breakpoints/getBreakpoint.js","../node_modules/swiper/core/check-overflow/index.js","../node_modules/swiper/core/defaults.js","../node_modules/swiper/core/moduleExtendParams.js","../node_modules/swiper/core/core.js","../node_modules/swiper/core/grab-cursor/index.js","../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../node_modules/swiper/core/classes/index.js","../node_modules/swiper/core/classes/addClasses.js","../node_modules/swiper/core/classes/removeClasses.js","../node_modules/swiper/core/modules/resize/resize.js","../node_modules/swiper/core/modules/observer/observer.js","../node_modules/swiper/components-shared/utils.js","../node_modules/swiper/components-shared/params-list.js","../node_modules/swiper/react/get-children.js","../node_modules/swiper/react/use-isomorphic-layout-effect.js","../node_modules/swiper/react/context.js","../node_modules/swiper/react/swiper.js","../node_modules/swiper/components-shared/get-params.js","../node_modules/swiper/components-shared/mount-swiper.js","../node_modules/swiper/components-shared/get-changed-params.js","../node_modules/swiper/components-shared/update-swiper.js","../node_modules/swiper/components-shared/update-on-virtual-data.js","../node_modules/swiper/react/virtual.js","../node_modules/swiper/react/swiper-slide.js","modules/Rewards/RewardsView.tsx","webpack://eva-staking-test/./src/modules/HowItWorks/styles.module.scss?3128","assets/svgComponents/HowItWorksTitle.tsx","../node_modules/src/observe.ts","../node_modules/src/InView.tsx","modules/HowItWorks/HowItWorksView.tsx","../node_modules/src/useInView.tsx","pages/StakingPage.tsx","webpack://eva-staking-test/./src/Layout/styles.module.scss?bc09","webpack://eva-staking-test/./src/modules/Header/styles.module.scss?f6b2","assets/svgComponents/Logo.tsx","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","assets/svgComponents/CopyIcon.tsx","assets/svgComponents/WalletIcon.tsx","assets/svgComponents/ExpandArrow.tsx","webpack://eva-staking-test/./src/modules/GetTenet/styles.module.scss?4e4f","assets/getTenetIcon/left.svg","modules/GetTenet/GetTenetView.tsx","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","assets/svgComponents/CheckIcon.tsx","assets/svgComponents/SmartIcon.tsx","modules/Header/HeaderView.tsx","hooks/useCopyToClipboard.ts","webpack://eva-staking-test/./src/modules/Footer/styles.module.scss?856f","assets/svgComponents/LinkIcon.tsx","modules/Footer/FooterView.tsx","webpack://eva-staking-test/./src/modules/Banner/styles.module.scss?8215","modules/Banner/BannerView.tsx","Layout/index.tsx","App.tsx","index.tsx"],"sourcesContent":["import { Chain, chainsType } from './../types'\nimport mainnet from './mainnet.json'\nimport ropsten from './ropsten.json'\nimport rinkeby from './rinkeby.json'\nimport kovan from './kovan.json'\nimport goerli from './goerli.json'\nimport sepolia from './sepolia.json'\n\n/**\n * @hidden\n */\nexport function _getInitializedChains(customChains?: Chain[]) {\n const names: any = {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '5': 'goerli',\n '11155111': 'sepolia',\n }\n const chains: any = {\n mainnet,\n ropsten,\n rinkeby,\n kovan,\n goerli,\n sepolia,\n }\n if (customChains) {\n for (const chain of customChains) {\n const name = chain.name\n names[chain.chainId.toString()] = name\n chains[name] = chain\n }\n }\n\n chains['names'] = names\n return chains\n}\n\n/**\n * @deprecated this constant will be internalized (removed)\n * on next major version update\n */\nexport const chains: chainsType = _getInitializedChains()\n","import { eipsType } from './../types'\n\nexport const EIPs: eipsType = {\n 1153: require('./1153.json'),\n 1559: require('./1559.json'),\n 2315: require('./2315.json'),\n 2537: require('./2537.json'),\n 2565: require('./2565.json'),\n 2718: require('./2718.json'),\n 2929: require('./2929.json'),\n 2930: require('./2930.json'),\n 3198: require('./3198.json'),\n 3529: require('./3529.json'),\n 3540: require('./3540.json'),\n 3541: require('./3541.json'),\n 3554: require('./3554.json'),\n 3607: require('./3607.json'),\n 3651: require('./3651.json'),\n 3670: require('./3670.json'),\n 3675: require('./3675.json'),\n 3855: require('./3855.json'),\n 3860: require('./3860.json'),\n 4345: require('./4345.json'),\n 4399: require('./4399.json'),\n 5133: require('./5133.json'),\n}\n","export const hardforks = [\n ['chainstart', require('./chainstart.json')],\n ['homestead', require('./homestead.json')],\n ['dao', require('./dao.json')],\n ['tangerineWhistle', require('./tangerineWhistle.json')],\n ['spuriousDragon', require('./spuriousDragon.json')],\n ['byzantium', require('./byzantium.json')],\n ['constantinople', require('./constantinople.json')],\n ['petersburg', require('./petersburg.json')],\n ['istanbul', require('./istanbul.json')],\n ['muirGlacier', require('./muirGlacier.json')],\n ['berlin', require('./berlin.json')],\n ['london', require('./london.json')],\n ['shanghai', require('./shanghai.json')],\n ['arrowGlacier', require('./arrowGlacier.json')],\n ['grayGlacier', require('./grayGlacier.json')],\n ['mergeForkIdTransition', require('./mergeForkIdTransition.json')],\n ['merge', require('./merge.json')],\n]\n","import { EventEmitter } from 'events'\nimport { buf as crc32Buffer } from 'crc-32'\nimport { BN, BNLike, toType, TypeOutput, intToBuffer } from 'ethereumjs-util'\nimport { _getInitializedChains } from './chains'\nimport { hardforks as HARDFORK_CHANGES } from './hardforks'\nimport { EIPs } from './eips'\nimport {\n BootstrapNode,\n Chain as IChain,\n GenesisBlock,\n GenesisState,\n Hardfork as HardforkParams,\n} from './types'\n\nexport enum CustomChain {\n /**\n * Polygon (Matic) Mainnet\n *\n * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)\n */\n PolygonMainnet = 'polygon-mainnet',\n\n /**\n * Polygon (Matic) Mumbai Testnet\n *\n * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)\n */\n PolygonMumbai = 'polygon-mumbai',\n\n /**\n * Arbitrum Rinkeby Testnet\n *\n * - [Documentation](https://developer.offchainlabs.com/docs/public_testnet)\n */\n ArbitrumRinkebyTestnet = 'arbitrum-rinkeby-testnet',\n\n /**\n * xDai EVM sidechain with a native stable token\n *\n * - [Documentation](https://www.xdaichain.com/)\n */\n xDaiChain = 'x-dai-chain',\n\n /**\n * Optimistic Kovan - testnet for Optimism roll-up\n *\n * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)\n */\n OptimisticKovan = 'optimistic-kovan',\n\n /**\n * Optimistic Ethereum - mainnet for Optimism roll-up\n *\n * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)\n */\n OptimisticEthereum = 'optimistic-ethereum',\n}\n\nexport enum Chain {\n Mainnet = 1,\n Ropsten = 3,\n Rinkeby = 4,\n Kovan = 42,\n Goerli = 5,\n Sepolia = 11155111,\n}\n\nexport enum Hardfork {\n Chainstart = 'chainstart',\n Homestead = 'homestead',\n Dao = 'dao',\n TangerineWhistle = 'tangerineWhistle',\n SpuriousDragon = 'spuriousDragon',\n Byzantium = 'byzantium',\n Constantinople = 'constantinople',\n Petersburg = 'petersburg',\n Istanbul = 'istanbul',\n MuirGlacier = 'muirGlacier',\n Berlin = 'berlin',\n London = 'london',\n ArrowGlacier = 'arrowGlacier',\n GrayGlacier = 'grayGlacier',\n MergeForkIdTransition = 'mergeForkIdTransition',\n Merge = 'merge',\n Shanghai = 'shanghai',\n}\n\nexport enum ConsensusType {\n ProofOfStake = 'pos',\n ProofOfWork = 'pow',\n ProofOfAuthority = 'poa',\n}\n\nexport enum ConsensusAlgorithm {\n Ethash = 'ethash',\n Clique = 'clique',\n Casper = 'casper',\n}\n\ninterface BaseOpts {\n /**\n * String identifier ('byzantium') for hardfork or {@link Hardfork} enum.\n *\n * Default: Hardfork.Istanbul\n */\n hardfork?: string | Hardfork\n /**\n * Limit parameter returns to the given hardforks\n */\n supportedHardforks?: Array\n /**\n * Selected EIPs which can be activated, please use an array for instantiation\n * (e.g. `eips: [ 2537, ]`)\n *\n * Currently supported:\n *\n * - [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) - BLS12-381 precompiles\n */\n eips?: number[]\n}\n\n/**\n * Options for instantiating a {@link Common} instance.\n */\nexport interface CommonOpts extends BaseOpts {\n /**\n * Chain name ('mainnet'), id (1), or {@link Chain} enum,\n * either from a chain directly supported or a custom chain\n * passed in via {@link CommonOpts.customChains}.\n */\n chain: string | number | Chain | BN | object\n /**\n * Initialize (in addition to the supported chains) with the selected\n * custom chains\n *\n * Usage (directly with the respective chain intialization via the {@link CommonOpts.chain} option):\n *\n * Pattern 1 (without genesis state):\n *\n * ```javascript\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ myCustomChain1 ]})\n * ```\n *\n * Pattern 2 (with genesis state see {@link GenesisState} for format):\n *\n * ```javascript\n * const simpleState = {\n * '0x0...01': '0x100', // For EoA\n * }\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * import chain1GenesisState from '[PATH_TO_GENESIS_STATES]/chain1GenesisState.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ [ myCustomChain1, simpleState ] ]})\n * ```\n *\n * Pattern 3 (with complex genesis state, containing contract accounts and storage).\n * Note that in {@link AccountState} there are two\n * accepted types. This allows to easily insert accounts in the genesis state:\n *\n * A complex genesis state with Contract and EoA states would have the following format:\n *\n * ```javascript\n * const complexState = {\n * '0x0...01': '0x100', // For EoA\n * '0x0...02': ['0x1', '0xRUNTIME_BYTECODE', [[ keyOne, valueOne ], [ keyTwo, valueTwo ]]] // For contracts\n * }\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ [ myCustomChain1, complexState ] ]})\n * ```\n */\n customChains?: IChain[] | [IChain, GenesisState][]\n}\n\n/**\n * Options to be used with the {@link Common.custom} static constructor.\n */\nexport interface CustomCommonOpts extends BaseOpts {\n /**\n * The name (`mainnet`), id (`1`), or {@link Chain} enum of\n * a standard chain used to base the custom chain params on.\n */\n baseChain?: string | number | Chain | BN\n}\n\ninterface hardforkOptions {\n /** optional, only allow supported HFs (default: false) */\n onlySupported?: boolean\n /** optional, only active HFs (default: false) */\n onlyActive?: boolean\n}\n\n/**\n * Common class to access chain and hardfork parameters and to provide\n * a unified and shared view on the network and hardfork state.\n *\n * Use the {@link Common.custom} static constructor for creating simple\n * custom chain {@link Common} objects (more complete custom chain setups\n * can be created via the main constructor and the {@link CommonOpts.customChains} parameter).\n */\nexport default class Common extends EventEmitter {\n readonly DEFAULT_HARDFORK: string | Hardfork\n\n private _chainParams: IChain\n private _hardfork: string | Hardfork\n private _supportedHardforks: Array = []\n private _eips: number[] = []\n private _customChains: IChain[] | [IChain, GenesisState][]\n\n /**\n * Creates a {@link Common} object for a custom chain, based on a standard one.\n *\n * It uses all the {@link Chain} parameters from the {@link baseChain} option except the ones overridden\n * in a provided {@link chainParamsOrName} dictionary. Some usage example:\n *\n * ```javascript\n * Common.custom({chainId: 123})\n * ```\n *\n * There are also selected supported custom chains which can be initialized by using one of the\n * {@link CustomChains} for {@link chainParamsOrName}, e.g.:\n *\n * ```javascript\n * Common.custom(CustomChains.MaticMumbai)\n * ```\n *\n * Note that these supported custom chains only provide some base parameters (usually the chain and\n * network ID and a name) and can only be used for selected use cases (e.g. sending a tx with\n * the `@ethereumjs/tx` library to a Layer-2 chain).\n *\n * @param chainParamsOrName Custom parameter dict (`name` will default to `custom-chain`) or string with name of a supported custom chain\n * @param opts Custom chain options to set the {@link CustomCommonOpts.baseChain}, selected {@link CustomCommonOpts.hardfork} and others\n */\n static custom(\n chainParamsOrName: Partial | CustomChain,\n opts: CustomCommonOpts = {}\n ): Common {\n const baseChain = opts.baseChain ?? 'mainnet'\n const standardChainParams = { ...Common._getChainParams(baseChain) }\n standardChainParams['name'] = 'custom-chain'\n\n if (typeof chainParamsOrName !== 'string') {\n return new Common({\n chain: {\n ...standardChainParams,\n ...chainParamsOrName,\n },\n ...opts,\n })\n } else {\n if (chainParamsOrName === CustomChain.PolygonMainnet) {\n return Common.custom(\n {\n name: CustomChain.PolygonMainnet,\n chainId: 137,\n networkId: 137,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.PolygonMumbai) {\n return Common.custom(\n {\n name: CustomChain.PolygonMumbai,\n chainId: 80001,\n networkId: 80001,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.ArbitrumRinkebyTestnet) {\n return Common.custom(\n {\n name: CustomChain.ArbitrumRinkebyTestnet,\n chainId: 421611,\n networkId: 421611,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.xDaiChain) {\n return Common.custom(\n {\n name: CustomChain.xDaiChain,\n chainId: 100,\n networkId: 100,\n },\n opts\n )\n }\n\n if (chainParamsOrName === CustomChain.OptimisticKovan) {\n return Common.custom(\n {\n name: CustomChain.OptimisticKovan,\n chainId: 69,\n networkId: 69,\n },\n // Optimism has not implemented the London hardfork yet (targeting Q1.22)\n { hardfork: Hardfork.Berlin, ...opts }\n )\n }\n\n if (chainParamsOrName === CustomChain.OptimisticEthereum) {\n return Common.custom(\n {\n name: CustomChain.OptimisticEthereum,\n chainId: 10,\n networkId: 10,\n },\n // Optimism has not implemented the London hardfork yet (targeting Q1.22)\n { hardfork: Hardfork.Berlin, ...opts }\n )\n }\n throw new Error(`Custom chain ${chainParamsOrName} not supported`)\n }\n }\n\n /**\n * Creates a {@link Common} object for a custom chain, based on a standard one. It uses all the `Chain`\n * params from {@link baseChain} except the ones overridden in {@link customChainParams}.\n *\n * @deprecated Use {@link Common.custom} instead\n *\n * @param baseChain The name (`mainnet`) or id (`1`) of a standard chain used to base the custom\n * chain params on.\n * @param customChainParams The custom parameters of the chain.\n * @param hardfork String identifier ('byzantium') for hardfork (optional)\n * @param supportedHardforks Limit parameter returns to the given hardforks (optional)\n */\n static forCustomChain(\n baseChain: string | number | Chain,\n customChainParams: Partial,\n hardfork?: string | Hardfork,\n supportedHardforks?: Array\n ): Common {\n const standardChainParams = Common._getChainParams(baseChain)\n\n return new Common({\n chain: {\n ...standardChainParams,\n ...customChainParams,\n },\n hardfork: hardfork,\n supportedHardforks: supportedHardforks,\n })\n }\n\n /**\n * Static method to determine if a {@link chainId} is supported as a standard chain\n * @param chainId BN id (`1`) of a standard chain\n * @returns boolean\n */\n static isSupportedChainId(chainId: BN): boolean {\n const initializedChains: any = _getInitializedChains()\n return Boolean(initializedChains['names'][chainId.toString()])\n }\n\n private static _getChainParams(\n chain: string | number | Chain | BN,\n customChains?: IChain[]\n ): IChain {\n const initializedChains: any = _getInitializedChains(customChains)\n if (typeof chain === 'number' || BN.isBN(chain)) {\n chain = chain.toString()\n\n if (initializedChains['names'][chain]) {\n const name: string = initializedChains['names'][chain]\n return initializedChains[name]\n }\n\n throw new Error(`Chain with ID ${chain} not supported`)\n }\n\n if (initializedChains[chain]) {\n return initializedChains[chain]\n }\n\n throw new Error(`Chain with name ${chain} not supported`)\n }\n\n /**\n *\n * @constructor\n */\n constructor(opts: CommonOpts) {\n super()\n this._customChains = opts.customChains ?? []\n this._chainParams = this.setChain(opts.chain)\n this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Istanbul\n for (const hf of this._chainParams.hardforks) {\n if (!hf.forkHash) {\n hf.forkHash = this._calcForkHash(hf.name)\n }\n }\n this._hardfork = this.DEFAULT_HARDFORK\n if (opts.supportedHardforks) {\n this._supportedHardforks = opts.supportedHardforks\n }\n if (opts.hardfork) {\n this.setHardfork(opts.hardfork)\n }\n if (opts.eips) {\n this.setEIPs(opts.eips)\n }\n }\n\n /**\n * Sets the chain\n * @param chain String ('mainnet') or Number (1) chain\n * representation. Or, a Dictionary of chain parameters for a private network.\n * @returns The dictionary with parameters set as chain\n */\n setChain(chain: string | number | Chain | BN | object): any {\n if (typeof chain === 'number' || typeof chain === 'string' || BN.isBN(chain)) {\n // Filter out genesis states if passed in to customChains\n let plainCustomChains: IChain[]\n if (\n this._customChains &&\n this._customChains.length > 0 &&\n Array.isArray(this._customChains[0])\n ) {\n plainCustomChains = (this._customChains as [IChain, GenesisState][]).map((e) => e[0])\n } else {\n plainCustomChains = this._customChains as IChain[]\n }\n this._chainParams = Common._getChainParams(chain, plainCustomChains)\n } else if (typeof chain === 'object') {\n if (this._customChains.length > 0) {\n throw new Error(\n 'Chain must be a string, number, or BN when initialized with customChains passed in'\n )\n }\n const required = ['networkId', 'genesis', 'hardforks', 'bootstrapNodes']\n for (const param of required) {\n if ((chain)[param] === undefined) {\n throw new Error(`Missing required chain parameter: ${param}`)\n }\n }\n this._chainParams = chain as IChain\n } else {\n throw new Error('Wrong input format')\n }\n return this._chainParams\n }\n\n /**\n * Sets the hardfork to get params for\n * @param hardfork String identifier (e.g. 'byzantium') or {@link Hardfork} enum\n */\n setHardfork(hardfork: string | Hardfork): void {\n if (!this._isSupportedHardfork(hardfork)) {\n throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`)\n }\n let existing = false\n for (const hfChanges of HARDFORK_CHANGES) {\n if (hfChanges[0] === hardfork) {\n if (this._hardfork !== hardfork) {\n this._hardfork = hardfork\n this.emit('hardforkChanged', hardfork)\n }\n existing = true\n }\n }\n if (!existing) {\n throw new Error(`Hardfork with name ${hardfork} not supported`)\n }\n }\n\n /**\n * Returns the hardfork based on the block number or an optional\n * total difficulty (Merge HF) provided.\n *\n * An optional TD takes precedence in case the corresponding HF block\n * is set to `null` or otherwise needs to match (if not an error\n * will be thrown).\n *\n * @param blockNumber\n * @param td\n * @returns The name of the HF\n */\n getHardforkByBlockNumber(blockNumber: BNLike, td?: BNLike): string {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n td = toType(td, TypeOutput.BN)\n\n let hardfork = Hardfork.Chainstart\n let minTdHF\n let maxTdHF\n let previousHF\n for (const hf of this.hardforks()) {\n // Skip comparison for not applied HFs\n if (hf.block === null) {\n if (td !== undefined && td !== null && hf.td !== undefined && hf.td !== null) {\n if (td.gte(new BN(hf.td))) {\n return hf.name\n }\n }\n continue\n }\n if (blockNumber.gte(new BN(hf.block))) {\n hardfork = hf.name as Hardfork\n }\n if (td && hf.td) {\n if (td.gte(new BN(hf.td))) {\n minTdHF = hf.name\n } else {\n maxTdHF = previousHF\n }\n }\n previousHF = hf.name\n }\n if (td) {\n let msgAdd = `block number: ${blockNumber} (-> ${hardfork}), `\n if (minTdHF) {\n if (!this.hardforkGteHardfork(hardfork, minTdHF)) {\n const msg = 'HF determined by block number is lower than the minimum total difficulty HF'\n msgAdd += `total difficulty: ${td} (-> ${minTdHF})`\n throw new Error(`${msg}: ${msgAdd}`)\n }\n }\n if (maxTdHF) {\n if (!this.hardforkGteHardfork(maxTdHF, hardfork)) {\n const msg = 'Maximum HF determined by total difficulty is lower than the block number HF'\n msgAdd += `total difficulty: ${td} (-> ${maxTdHF})`\n throw new Error(`${msg}: ${msgAdd}`)\n }\n }\n }\n return hardfork\n }\n\n /**\n * Sets a new hardfork based on the block number or an optional\n * total difficulty (Merge HF) provided.\n *\n * An optional TD takes precedence in case the corresponding HF block\n * is set to `null` or otherwise needs to match (if not an error\n * will be thrown).\n *\n * @param blockNumber\n * @param td\n * @returns The name of the HF set\n */\n setHardforkByBlockNumber(blockNumber: BNLike, td?: BNLike): string {\n const hardfork = this.getHardforkByBlockNumber(blockNumber, td)\n this.setHardfork(hardfork)\n return hardfork\n }\n\n /**\n * Internal helper function to choose between hardfork set and hardfork provided as param\n * @param hardfork Hardfork given to function as a parameter\n * @returns Hardfork chosen to be used\n */\n _chooseHardfork(hardfork?: string | Hardfork | null, onlySupported: boolean = true): string {\n if (!hardfork) {\n hardfork = this._hardfork\n } else if (onlySupported && !this._isSupportedHardfork(hardfork)) {\n throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`)\n }\n return hardfork\n }\n\n /**\n * Internal helper function, returns the params for the given hardfork for the chain set\n * @param hardfork Hardfork name\n * @returns Dictionary with hardfork params\n */\n _getHardfork(hardfork: string | Hardfork): any {\n const hfs = this.hardforks()\n for (const hf of hfs) {\n if (hf['name'] === hardfork) return hf\n }\n throw new Error(`Hardfork ${hardfork} not defined for chain ${this.chainName()}`)\n }\n\n /**\n * Internal helper function to check if a hardfork is set to be supported by the library\n * @param hardfork Hardfork name\n * @returns True if hardfork is supported\n */\n _isSupportedHardfork(hardfork: string | Hardfork | null): boolean {\n if (this._supportedHardforks.length > 0) {\n for (const supportedHf of this._supportedHardforks) {\n if (hardfork === supportedHf) return true\n }\n } else {\n return true\n }\n return false\n }\n\n /**\n * Sets the active EIPs\n * @param eips\n */\n setEIPs(eips: number[] = []) {\n for (const eip of eips) {\n if (!(eip in EIPs)) {\n throw new Error(`${eip} not supported`)\n }\n const minHF = this.gteHardfork(EIPs[eip]['minimumHardfork'])\n if (!minHF) {\n throw new Error(\n `${eip} cannot be activated on hardfork ${this.hardfork()}, minimumHardfork: ${minHF}`\n )\n }\n if (EIPs[eip].requiredEIPs) {\n ;(EIPs[eip].requiredEIPs as number[]).forEach((elem) => {\n if (!(eips.includes(elem) || this.isActivatedEIP(elem))) {\n throw new Error(`${eip} requires EIP ${elem}, but is not included in the EIP list`)\n }\n })\n }\n }\n this._eips = eips\n }\n\n /**\n * Returns a parameter for the current chain setup\n *\n * If the parameter is present in an EIP, the EIP always takes precendence.\n * Otherwise the parameter if taken from the latest applied HF with\n * a change on the respective parameter.\n *\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @returns The value requested or `null` if not found\n */\n param(topic: string, name: string): any {\n // TODO: consider the case that different active EIPs\n // can change the same parameter\n let value = null\n for (const eip of this._eips) {\n value = this.paramByEIP(topic, name, eip)\n if (value !== null) {\n return value\n }\n }\n return this.paramByHardfork(topic, name, this._hardfork)\n }\n\n /**\n * Returns the parameter corresponding to a hardfork\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param hardfork Hardfork name\n * @returns The value requested or `null` if not found\n */\n paramByHardfork(topic: string, name: string, hardfork: string | Hardfork): any {\n hardfork = this._chooseHardfork(hardfork)\n\n let value = null\n for (const hfChanges of HARDFORK_CHANGES) {\n // EIP-referencing HF file (e.g. berlin.json)\n if ('eips' in hfChanges[1]) {\n const hfEIPs = hfChanges[1]['eips']\n for (const eip of hfEIPs) {\n const valueEIP = this.paramByEIP(topic, name, eip)\n value = valueEIP !== null ? valueEIP : value\n }\n // Paramater-inlining HF file (e.g. istanbul.json)\n } else {\n if (!hfChanges[1][topic]) {\n throw new Error(`Topic ${topic} not defined`)\n }\n if (hfChanges[1][topic][name] !== undefined) {\n value = hfChanges[1][topic][name].v\n }\n }\n if (hfChanges[0] === hardfork) break\n }\n return value\n }\n\n /**\n * Returns a parameter corresponding to an EIP\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param eip Number of the EIP\n * @returns The value requested or `null` if not found\n */\n paramByEIP(topic: string, name: string, eip: number): any {\n if (!(eip in EIPs)) {\n throw new Error(`${eip} not supported`)\n }\n\n const eipParams = EIPs[eip]\n if (!(topic in eipParams)) {\n throw new Error(`Topic ${topic} not defined`)\n }\n if (eipParams[topic][name] === undefined) {\n return null\n }\n const value = eipParams[topic][name].v\n return value\n }\n\n /**\n * Returns a parameter for the hardfork active on block number\n * @param topic Parameter topic\n * @param name Parameter name\n * @param blockNumber Block number\n */\n paramByBlock(topic: string, name: string, blockNumber: BNLike): any {\n const activeHfs = this.activeHardforks(blockNumber)\n const hardfork = activeHfs[activeHfs.length - 1]['name']\n return this.paramByHardfork(topic, name, hardfork)\n }\n\n /**\n * Checks if an EIP is activated by either being included in the EIPs\n * manually passed in with the {@link CommonOpts.eips} or in a\n * hardfork currently being active\n *\n * Note: this method only works for EIPs being supported\n * by the {@link CommonOpts.eips} constructor option\n * @param eip\n */\n isActivatedEIP(eip: number): boolean {\n if (this.eips().includes(eip)) {\n return true\n }\n for (const hfChanges of HARDFORK_CHANGES) {\n const hf = hfChanges[1]\n if (this.gteHardfork(hf['name']) && 'eips' in hf) {\n if (hf['eips'].includes(eip)) {\n return true\n }\n }\n }\n return false\n }\n\n /**\n * Checks if set or provided hardfork is active on block number\n * @param hardfork Hardfork name or null (for HF set)\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n hardforkIsActiveOnBlock(\n hardfork: string | Hardfork | null,\n blockNumber: BNLike,\n opts: hardforkOptions = {}\n ): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n const onlySupported = opts.onlySupported ?? false\n hardfork = this._chooseHardfork(hardfork, onlySupported)\n const hfBlock = this.hardforkBlockBN(hardfork)\n if (hfBlock && blockNumber.gte(hfBlock)) {\n return true\n }\n return false\n }\n\n /**\n * Alias to hardforkIsActiveOnBlock when hardfork is set\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n activeOnBlock(blockNumber: BNLike, opts?: hardforkOptions): boolean {\n return this.hardforkIsActiveOnBlock(null, blockNumber, opts)\n }\n\n /**\n * Sequence based check if given or set HF1 is greater than or equal HF2\n * @param hardfork1 Hardfork name or null (if set)\n * @param hardfork2 Hardfork name\n * @param opts Hardfork options\n * @returns True if HF1 gte HF2\n */\n hardforkGteHardfork(\n hardfork1: string | Hardfork | null,\n hardfork2: string | Hardfork,\n opts: hardforkOptions = {}\n ): boolean {\n const onlyActive = opts.onlyActive === undefined ? false : opts.onlyActive\n hardfork1 = this._chooseHardfork(hardfork1, opts.onlySupported)\n\n let hardforks\n if (onlyActive) {\n hardforks = this.activeHardforks(null, opts)\n } else {\n hardforks = this.hardforks()\n }\n\n let posHf1 = -1,\n posHf2 = -1\n let index = 0\n for (const hf of hardforks) {\n if (hf['name'] === hardfork1) posHf1 = index\n if (hf['name'] === hardfork2) posHf2 = index\n index += 1\n }\n return posHf1 >= posHf2 && posHf2 !== -1\n }\n\n /**\n * Alias to hardforkGteHardfork when hardfork is set\n * @param hardfork Hardfork name\n * @param opts Hardfork options\n * @returns True if hardfork set is greater than hardfork provided\n */\n gteHardfork(hardfork: string | Hardfork, opts?: hardforkOptions): boolean {\n return this.hardforkGteHardfork(null, hardfork, opts)\n }\n\n /**\n * Checks if given or set hardfork is active on the chain\n * @param hardfork Hardfork name, optional if HF set\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if hardfork is active on the chain\n */\n hardforkIsActiveOnChain(\n hardfork?: string | Hardfork | null,\n opts: hardforkOptions = {}\n ): boolean {\n const onlySupported = opts.onlySupported ?? false\n hardfork = this._chooseHardfork(hardfork, onlySupported)\n for (const hf of this.hardforks()) {\n if (hf['name'] === hardfork && hf['block'] !== null) return true\n }\n return false\n }\n\n /**\n * Returns the active hardfork switches for the current chain\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Array with hardfork arrays\n */\n activeHardforks(blockNumber?: BNLike | null, opts: hardforkOptions = {}): HardforkParams[] {\n const activeHardforks: HardforkParams[] = []\n const hfs = this.hardforks()\n for (const hf of hfs) {\n if (hf['block'] === null) continue\n if (blockNumber !== undefined && blockNumber !== null && blockNumber < hf['block']) break\n if (opts.onlySupported && !this._isSupportedHardfork(hf['name'])) continue\n\n activeHardforks.push(hf)\n }\n return activeHardforks\n }\n\n /**\n * Returns the latest active hardfork name for chain or block or throws if unavailable\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Hardfork name\n */\n activeHardfork(blockNumber?: BNLike | null, opts: hardforkOptions = {}): string {\n const activeHardforks = this.activeHardforks(blockNumber, opts)\n if (activeHardforks.length > 0) {\n return activeHardforks[activeHardforks.length - 1]['name']\n } else {\n throw new Error(`No (supported) active hardfork found`)\n }\n }\n\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if unscheduled\n * @deprecated Please use {@link Common.hardforkBlockBN} for large number support\n */\n hardforkBlock(hardfork?: string | Hardfork): number | null {\n const block = this.hardforkBlockBN(hardfork)\n return toType(block, TypeOutput.Number)\n }\n\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if unscheduled\n */\n hardforkBlockBN(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const block = this._getHardfork(hardfork)['block']\n if (block === undefined || block === null) {\n return null\n }\n return new BN(block)\n }\n\n /**\n * Returns the hardfork change total difficulty (Merge HF) for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Total difficulty or null if no set\n */\n hardforkTD(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const td = this._getHardfork(hardfork)['td']\n if (td === undefined || td === null) {\n return null\n }\n return new BN(td)\n }\n\n /**\n * True if block number provided is the hardfork (given or set) change block\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n isHardforkBlock(blockNumber: BNLike, hardfork?: string | Hardfork): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n hardfork = this._chooseHardfork(hardfork, false)\n const block = this.hardforkBlockBN(hardfork)\n return block ? block.eq(blockNumber) : false\n }\n\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n * @deprecated Please use {@link Common.nextHardforkBlockBN} for large number support\n */\n nextHardforkBlock(hardfork?: string | Hardfork): number | null {\n const block = this.nextHardforkBlockBN(hardfork)\n return toType(block, TypeOutput.Number)\n }\n\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n */\n nextHardforkBlockBN(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const hfBlock = this.hardforkBlockBN(hardfork)\n if (hfBlock === null) {\n return null\n }\n // Next fork block number or null if none available\n // Logic: if accumulator is still null and on the first occurrence of\n // a block greater than the current hfBlock set the accumulator,\n // pass on the accumulator as the final result from this time on\n const nextHfBlock = this.hardforks().reduce((acc: BN | null, hf: HardforkParams) => {\n const block = new BN(hf.block!)\n return block.gt(hfBlock) && acc === null ? block : acc\n }, null)\n return nextHfBlock\n }\n\n /**\n * True if block number provided is the hardfork change block following the hardfork given or set\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n isNextHardforkBlock(blockNumber: BNLike, hardfork?: string | Hardfork): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n hardfork = this._chooseHardfork(hardfork, false)\n const nextHardforkBlock = this.nextHardforkBlockBN(hardfork)\n\n return nextHardforkBlock === null ? false : nextHardforkBlock.eq(blockNumber)\n }\n\n /**\n * Internal helper function to calculate a fork hash\n * @param hardfork Hardfork name\n * @returns Fork hash as hex string\n */\n _calcForkHash(hardfork: string | Hardfork) {\n const genesis = Buffer.from(this.genesis().hash.substr(2), 'hex')\n\n let hfBuffer = Buffer.alloc(0)\n let prevBlock = 0\n for (const hf of this.hardforks()) {\n const block = hf.block\n\n // Skip for chainstart (0), not applied HFs (null) and\n // when already applied on same block number HFs\n if (block !== 0 && block !== null && block !== prevBlock) {\n const hfBlockBuffer = Buffer.from(block.toString(16).padStart(16, '0'), 'hex')\n hfBuffer = Buffer.concat([hfBuffer, hfBlockBuffer])\n }\n\n if (hf.name === hardfork) break\n if (block !== null) {\n prevBlock = block\n }\n }\n const inputBuffer = Buffer.concat([genesis, hfBuffer])\n\n // CRC32 delivers result as signed (negative) 32-bit integer,\n // convert to hex string\n const forkhash = intToBuffer(crc32Buffer(inputBuffer) >>> 0).toString('hex')\n return `0x${forkhash}`\n }\n\n /**\n * Returns an eth/64 compliant fork hash (EIP-2124)\n * @param hardfork Hardfork name, optional if HF set\n */\n forkHash(hardfork?: string | Hardfork) {\n hardfork = this._chooseHardfork(hardfork, false)\n const data = this._getHardfork(hardfork)\n if (data['block'] === null && data['td'] === undefined) {\n const msg = 'No fork hash calculation possible for future hardfork'\n throw new Error(msg)\n }\n if (data['forkHash'] !== undefined) {\n return data['forkHash']\n }\n return this._calcForkHash(hardfork)\n }\n\n /**\n *\n * @param forkHash Fork hash as a hex string\n * @returns Array with hardfork data (name, block, forkHash)\n */\n hardforkForForkHash(forkHash: string): any | null {\n const resArray = this.hardforks().filter((hf: any) => {\n return hf.forkHash === forkHash\n })\n return resArray.length >= 1 ? resArray[resArray.length - 1] : null\n }\n\n /**\n * Returns the Genesis parameters of the current chain\n * @returns Genesis dictionary\n */\n genesis(): GenesisBlock {\n return this._chainParams['genesis']\n }\n\n /**\n * Returns the Genesis state of the current chain,\n * all values are provided as hex-prefixed strings.\n */\n genesisState(): GenesisState {\n // Use require statements here in favor of import statements\n // to load json files on demand\n // (high memory usage by large mainnet.json genesis state file)\n switch (this.chainName()) {\n case 'mainnet':\n return require('./genesisStates/mainnet.json')\n case 'ropsten':\n return require('./genesisStates/ropsten.json')\n case 'rinkeby':\n return require('./genesisStates/rinkeby.json')\n case 'kovan':\n return require('./genesisStates/kovan.json')\n case 'goerli':\n return require('./genesisStates/goerli.json')\n case 'sepolia':\n return require('./genesisStates/sepolia.json')\n }\n\n // Custom chains with genesis state provided\n if (\n this._customChains &&\n this._customChains.length > 0 &&\n Array.isArray(this._customChains[0])\n ) {\n for (const chainArrayWithGenesis of this._customChains as [IChain, GenesisState][]) {\n if (chainArrayWithGenesis[0].name === this.chainName()) {\n return chainArrayWithGenesis[1]\n }\n }\n }\n\n return {}\n }\n\n /**\n * Returns the hardforks for current chain\n * @returns {Array} Array with arrays of hardforks\n */\n hardforks(): HardforkParams[] {\n return this._chainParams['hardforks']\n }\n\n /**\n * Returns bootstrap nodes for the current chain\n * @returns {Dictionary} Dict with bootstrap nodes\n */\n bootstrapNodes(): BootstrapNode[] {\n return this._chainParams['bootstrapNodes']\n }\n\n /**\n * Returns DNS networks for the current chain\n * @returns {String[]} Array of DNS ENR urls\n */\n dnsNetworks(): string[] {\n return this._chainParams['dnsNetworks']!\n }\n\n /**\n * Returns the hardfork set\n * @returns Hardfork name\n */\n hardfork(): string | Hardfork {\n return this._hardfork\n }\n\n /**\n * Returns the Id of current chain\n * @returns chain Id\n * @deprecated Please use {@link Common.chainIdBN} for large number support\n */\n chainId(): number {\n return toType(this.chainIdBN(), TypeOutput.Number)\n }\n\n /**\n * Returns the Id of current chain\n * @returns chain Id\n */\n chainIdBN(): BN {\n return new BN(this._chainParams['chainId'])\n }\n\n /**\n * Returns the name of current chain\n * @returns chain name (lower case)\n */\n chainName(): string {\n return this._chainParams['name']\n }\n\n /**\n * Returns the Id of current network\n * @returns network Id\n * @deprecated Please use {@link Common.networkIdBN} for large number support\n */\n networkId(): number {\n return toType(this.networkIdBN(), TypeOutput.Number)\n }\n\n /**\n * Returns the Id of current network\n * @returns network Id\n */\n networkIdBN(): BN {\n return new BN(this._chainParams['networkId'])\n }\n\n /**\n * Returns the active EIPs\n * @returns List of EIPs\n */\n eips(): number[] {\n return this._eips\n }\n\n /**\n * Returns the consensus type of the network\n * Possible values: \"pow\"|\"poa\"|\"pos\"\n *\n * Note: This value can update along a hardfork.\n */\n consensusType(): string | ConsensusType {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n value = hfChanges[1]['consensus']['type']\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n return this._chainParams['consensus']!['type']\n }\n\n /**\n * Returns the concrete consensus implementation\n * algorithm or protocol for the network\n * e.g. \"ethash\" for \"pow\" consensus type,\n * \"clique\" for \"poa\" consensus type or\n * \"casper\" for \"pos\" consensus type.\n *\n * Note: This value can update along a hardfork.\n */\n consensusAlgorithm(): string | ConsensusAlgorithm {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n value = hfChanges[1]['consensus']['algorithm']\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n return this._chainParams['consensus']!['algorithm'] as ConsensusAlgorithm\n }\n\n /**\n * Returns a dictionary with consensus configuration\n * parameters based on the consensus algorithm\n *\n * Expected returns (parameters must be present in\n * the respective chain json files):\n *\n * ethash: -\n * clique: period, epoch\n * aura: -\n * casper: -\n *\n * Note: This value can update along a hardfork.\n */\n consensusConfig(): { [key: string]: any } {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n // The config parameter is named after the respective consensus algorithm\n value = hfChanges[1]['consensus'][hfChanges[1]['consensus']['algorithm']]\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n const consensusAlgorithm = this.consensusAlgorithm()\n return this._chainParams['consensus']![consensusAlgorithm as ConsensusAlgorithm]\n }\n\n /**\n * Returns a deep copy of this {@link Common} instance.\n */\n copy(): Common {\n const copy = Object.assign(Object.create(Object.getPrototypeOf(this)), this)\n copy.removeAllListeners()\n return copy\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\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 * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n\n if (vBN.eqn(0) || vBN.eqn(1)) return toType(v, TypeOutput.BN)\n\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\n","import Common, { Chain, Hardfork } from '@ethereumjs/common'\nimport {\n Address,\n BN,\n toBuffer,\n MAX_INTEGER,\n MAX_UINT64,\n unpadBuffer,\n ecsign,\n publicToAddress,\n BNLike,\n bufferToHex,\n} from 'ethereumjs-util'\nimport {\n TxData,\n JsonTx,\n AccessListEIP2930ValuesArray,\n AccessListEIP2930TxData,\n FeeMarketEIP1559ValuesArray,\n FeeMarketEIP1559TxData,\n TxValuesArray,\n Capability,\n TxOptions,\n} from './types'\n\ninterface TransactionCache {\n hash: Buffer | undefined\n dataFee?: {\n value: BN\n hardfork: string | Hardfork\n }\n}\n\n/**\n * This base class will likely be subject to further\n * refactoring along the introduction of additional tx types\n * on the Ethereum network.\n *\n * It is therefore not recommended to use directly.\n */\nexport abstract class BaseTransaction {\n private readonly _type: number\n\n public readonly nonce: BN\n public readonly gasLimit: BN\n public readonly to?: Address\n public readonly value: BN\n public readonly data: Buffer\n\n public readonly v?: BN\n public readonly r?: BN\n public readonly s?: BN\n\n public readonly common!: Common\n\n protected cache: TransactionCache = {\n hash: undefined,\n dataFee: undefined,\n }\n\n protected readonly txOptions: TxOptions\n\n /**\n * List of tx type defining EIPs,\n * e.g. 1559 (fee market) and 2930 (access lists)\n * for FeeMarketEIP1559Transaction objects\n */\n protected activeCapabilities: number[] = []\n\n /**\n * The default chain the tx falls back to if no Common\n * is provided and if the chain can't be derived from\n * a passed in chainId (only EIP-2718 typed txs) or\n * EIP-155 signature (legacy txs).\n *\n * @hidden\n */\n protected DEFAULT_CHAIN = Chain.Mainnet\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK: string | Hardfork = Hardfork.Istanbul\n\n constructor(txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData, opts: TxOptions) {\n const { nonce, gasLimit, to, value, data, v, r, s, type } = txData\n this._type = new BN(toBuffer(type)).toNumber()\n\n this.txOptions = opts\n\n const toB = toBuffer(to === '' ? '0x' : to)\n const vB = toBuffer(v === '' ? '0x' : v)\n const rB = toBuffer(r === '' ? '0x' : r)\n const sB = toBuffer(s === '' ? '0x' : s)\n\n this.nonce = new BN(toBuffer(nonce === '' ? '0x' : nonce))\n this.gasLimit = new BN(toBuffer(gasLimit === '' ? '0x' : gasLimit))\n this.to = toB.length > 0 ? new Address(toB) : undefined\n this.value = new BN(toBuffer(value === '' ? '0x' : value))\n this.data = toBuffer(data === '' ? '0x' : data)\n\n this.v = vB.length > 0 ? new BN(vB) : undefined\n this.r = rB.length > 0 ? new BN(rB) : undefined\n this.s = sB.length > 0 ? new BN(sB) : undefined\n\n this._validateCannotExceedMaxInteger({ value: this.value, r: this.r, s: this.s })\n\n // geth limits gasLimit to 2^64-1\n this._validateCannotExceedMaxInteger({ gasLimit: this.gasLimit }, 64)\n\n // EIP-2681 limits nonce to 2^64-1 (cannot equal 2^64-1)\n this._validateCannotExceedMaxInteger({ nonce: this.nonce }, 64, true)\n }\n\n /**\n * Alias for {@link BaseTransaction.type}\n *\n * @deprecated Use `type` instead\n */\n get transactionType(): number {\n return this.type\n }\n\n /**\n * Returns the transaction type.\n *\n * Note: legacy txs will return tx type `0`.\n */\n get type() {\n return this._type\n }\n\n /**\n * Checks if a tx type defining capability is active\n * on a tx, for example the EIP-1559 fee market mechanism\n * or the EIP-2930 access list feature.\n *\n * Note that this is different from the tx type itself,\n * so EIP-2930 access lists can very well be active\n * on an EIP-1559 tx for example.\n *\n * This method can be useful for feature checks if the\n * tx type is unknown (e.g. when instantiated with\n * the tx factory).\n *\n * See `Capabilites` in the `types` module for a reference\n * on all supported capabilities.\n */\n supports(capability: Capability) {\n return this.activeCapabilities.includes(capability)\n }\n\n /**\n * Checks if the transaction has the minimum amount of gas required\n * (DataFee + TxFee + Creation Fee).\n */\n validate(): boolean\n validate(stringError: false): boolean\n validate(stringError: true): string[]\n validate(stringError: boolean = false): boolean | string[] {\n const errors = []\n\n if (this.getBaseFee().gt(this.gasLimit)) {\n errors.push(`gasLimit is too low. given ${this.gasLimit}, need at least ${this.getBaseFee()}`)\n }\n\n if (this.isSigned() && !this.verifySignature()) {\n errors.push('Invalid Signature')\n }\n\n return stringError ? errors : errors.length === 0\n }\n\n /**\n * The minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n */\n getBaseFee(): BN {\n const fee = this.getDataFee().addn(this.common.param('gasPrices', 'tx'))\n if (this.common.gteHardfork('homestead') && this.toCreationAddress()) {\n fee.iaddn(this.common.param('gasPrices', 'txCreation'))\n }\n return fee\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n const txDataZero = this.common.param('gasPrices', 'txDataZero')\n const txDataNonZero = this.common.param('gasPrices', 'txDataNonZero')\n\n let cost: number | BN = 0\n for (let i = 0; i < this.data.length; i++) {\n this.data[i] === 0 ? (cost += txDataZero) : (cost += txDataNonZero)\n }\n\n cost = new BN(cost)\n if ((this.to === undefined || this.to === null) && this.common.isActivatedEIP(3860)) {\n const dataLength = Math.ceil(this.data.length / 32)\n const initCodeCost = new BN(this.common.param('gasPrices', 'initCodeWordCost')).imuln(\n dataLength\n )\n cost.iadd(initCodeCost)\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n abstract getUpfrontCost(): BN\n\n /**\n * If the tx's `to` is to the creation address\n */\n toCreationAddress(): boolean {\n return this.to === undefined || this.to.buf.length === 0\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n *\n * Use {@link BaseTransaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link BaseTransaction.getMessageToSign}.\n */\n abstract raw(): TxValuesArray | AccessListEIP2930ValuesArray | FeeMarketEIP1559ValuesArray\n\n /**\n * Returns the encoding of the transaction.\n */\n abstract serialize(): Buffer\n\n // Returns the unsigned tx (hashed or raw), which is used to sign the transaction.\n //\n // Note: do not use code docs here since VS Studio is then not able to detect the\n // comments from the inherited methods\n abstract getMessageToSign(hashMessage: false): Buffer | Buffer[]\n abstract getMessageToSign(hashMessage?: true): Buffer\n\n abstract hash(): Buffer\n\n abstract getMessageToVerifySignature(): Buffer\n\n public isSigned(): boolean {\n const { v, r, s } = this\n if (this.type === 0) {\n if (!v || !r || !s) {\n return false\n } else {\n return true\n }\n } else {\n if (v === undefined || !r || !s) {\n return false\n } else {\n return true\n }\n }\n }\n\n /**\n * Determines if the signature is valid\n */\n verifySignature(): boolean {\n try {\n // Main signature verification is done in `getSenderPublicKey()`\n const publicKey = this.getSenderPublicKey()\n return unpadBuffer(publicKey).length !== 0\n } catch (e: any) {\n return false\n }\n }\n\n /**\n * Returns the sender's address\n */\n getSenderAddress(): Address {\n return new Address(publicToAddress(this.getSenderPublicKey()))\n }\n\n /**\n * Returns the public key of the sender\n */\n abstract getSenderPublicKey(): Buffer\n\n /**\n * Signs a transaction.\n *\n * Note that the signed tx is returned as a new object,\n * use as follows:\n * ```javascript\n * const signedTx = tx.sign(privateKey)\n * ```\n */\n sign(privateKey: Buffer): TransactionObject {\n if (privateKey.length !== 32) {\n const msg = this._errorMsg('Private key must be 32 bytes in length.')\n throw new Error(msg)\n }\n\n // Hack for the constellation that we have got a legacy tx after spuriousDragon with a non-EIP155 conforming signature\n // and want to recreate a signature (where EIP155 should be applied)\n // Leaving this hack lets the legacy.spec.ts -> sign(), verifySignature() test fail\n // 2021-06-23\n let hackApplied = false\n if (\n this.type === 0 &&\n this.common.gteHardfork('spuriousDragon') &&\n !this.supports(Capability.EIP155ReplayProtection)\n ) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n hackApplied = true\n }\n\n const msgHash = this.getMessageToSign(true)\n const { v, r, s } = ecsign(msgHash, privateKey)\n const tx = this._processSignature(v, r, s)\n\n // Hack part 2\n if (hackApplied) {\n const index = this.activeCapabilities.indexOf(Capability.EIP155ReplayProtection)\n if (index > -1) {\n this.activeCapabilities.splice(index, 1)\n }\n }\n\n return tx\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n abstract toJSON(): JsonTx\n\n // Accept the v,r,s values from the `sign` method, and convert this into a TransactionObject\n protected abstract _processSignature(v: number, r: Buffer, s: Buffer): TransactionObject\n\n /**\n * Does chain ID checks on common and returns a common\n * to be used on instantiation\n * @hidden\n *\n * @param common - {@link Common} instance from tx options\n * @param chainId - Chain ID from tx options (typed txs) or signature (legacy tx)\n */\n protected _getCommon(common?: Common, chainId?: BNLike) {\n // Chain ID provided\n if (chainId) {\n const chainIdBN = new BN(toBuffer(chainId))\n if (common) {\n if (!common.chainIdBN().eq(chainIdBN)) {\n const msg = this._errorMsg('The chain ID does not match the chain ID of Common')\n throw new Error(msg)\n }\n // Common provided, chain ID does match\n // -> Return provided Common\n return common.copy()\n } else {\n if (Common.isSupportedChainId(chainIdBN)) {\n // No Common, chain ID supported by Common\n // -> Instantiate Common with chain ID\n return new Common({ chain: chainIdBN, hardfork: this.DEFAULT_HARDFORK })\n } else {\n // No Common, chain ID not supported by Common\n // -> Instantiate custom Common derived from DEFAULT_CHAIN\n return Common.forCustomChain(\n this.DEFAULT_CHAIN,\n {\n name: 'custom-chain',\n networkId: chainIdBN,\n chainId: chainIdBN,\n },\n this.DEFAULT_HARDFORK\n )\n }\n }\n } else {\n // No chain ID provided\n // -> return Common provided or create new default Common\n return (\n common?.copy() ?? new Common({ chain: this.DEFAULT_CHAIN, hardfork: this.DEFAULT_HARDFORK })\n )\n }\n }\n\n /**\n * Validates that an object with BN values cannot exceed the specified bit limit.\n * @param values Object containing string keys and BN values\n * @param bits Number of bits to check (64 or 256)\n * @param cannotEqual Pass true if the number also cannot equal one less the maximum value\n */\n protected _validateCannotExceedMaxInteger(\n values: { [key: string]: BN | undefined },\n bits = 256,\n cannotEqual = false\n ) {\n for (const [key, value] of Object.entries(values)) {\n switch (bits) {\n case 64:\n if (cannotEqual) {\n if (value?.gte(MAX_UINT64)) {\n const msg = this._errorMsg(\n `${key} cannot equal or exceed MAX_UINT64 (2^64-1), given ${value}`\n )\n throw new Error(msg)\n }\n } else {\n if (value?.gt(MAX_UINT64)) {\n const msg = this._errorMsg(`${key} cannot exceed MAX_UINT64 (2^64-1), given ${value}`)\n throw new Error(msg)\n }\n }\n break\n case 256:\n if (cannotEqual) {\n if (value?.gte(MAX_INTEGER)) {\n const msg = this._errorMsg(\n `${key} cannot equal or exceed MAX_INTEGER (2^256-1), given ${value}`\n )\n throw new Error(msg)\n }\n } else {\n if (value?.gt(MAX_INTEGER)) {\n const msg = this._errorMsg(\n `${key} cannot exceed MAX_INTEGER (2^256-1), given ${value}`\n )\n throw new Error(msg)\n }\n }\n break\n default: {\n const msg = this._errorMsg('unimplemented bits value')\n throw new Error(msg)\n }\n }\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public abstract errorStr(): string\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected abstract _errorMsg(msg: string): string\n\n /**\n * Returns the shared error postfix part for _error() method\n * tx type implementations.\n */\n protected _getSharedErrorPostfix() {\n let hash = ''\n try {\n hash = this.isSigned() ? bufferToHex(this.hash()) : 'not available (unsigned)'\n } catch (e: any) {\n hash = 'error'\n }\n let isSigned = ''\n try {\n isSigned = this.isSigned().toString()\n } catch (e: any) {\n hash = 'error'\n }\n let hf = ''\n try {\n hf = this.common.hardfork()\n } catch (e: any) {\n hf = 'error'\n }\n\n let postfix = `tx type=${this.type} hash=${hash} nonce=${this.nonce} value=${this.value} `\n postfix += `signed=${isSigned} hf=${hf}`\n\n return postfix\n }\n}\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n keccak256,\n MAX_INTEGER,\n rlp,\n toBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { BaseTransaction } from './baseTransaction'\nimport {\n AccessList,\n AccessListBuffer,\n FeeMarketEIP1559TxData,\n FeeMarketEIP1559ValuesArray,\n JsonTx,\n N_DIV_2,\n TxOptions,\n} from './types'\nimport { AccessLists, checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 2\nconst TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')\n\n/**\n * Typed transaction with a new gas fee market mechanism\n *\n * - TransactionType: 2\n * - EIP: [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)\n */\nexport default class FeeMarketEIP1559Transaction extends BaseTransaction {\n public readonly chainId: BN\n public readonly accessList: AccessListBuffer\n public readonly AccessListJSON: AccessList\n public readonly maxPriorityFeePerGas: BN\n public readonly maxFeePerGas: BN\n\n public readonly common: Common\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK = 'london'\n\n /**\n * EIP-2930 alias for `r`\n *\n * @deprecated use `r` instead\n */\n get senderR() {\n return this.r\n }\n\n /**\n * EIP-2930 alias for `s`\n *\n * @deprecated use `s` instead\n */\n get senderS() {\n return this.s\n }\n\n /**\n * EIP-2930 alias for `v`\n *\n * @deprecated use `v` instead\n */\n get yParity() {\n return this.v\n }\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, v, r, s }\n *\n * Notes:\n * - `chainId` will be set automatically if not provided\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: FeeMarketEIP1559TxData, opts: TxOptions = {}) {\n return new FeeMarketEIP1559Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `0x02 || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\n `Invalid serialized tx input: not an EIP-1559 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${serialized\n .slice(0, 1)\n .toString('hex')}`\n )\n }\n\n const values = rlp.decode(serialized.slice(1))\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array')\n }\n\n return FeeMarketEIP1559Transaction.fromValuesArray(values as any, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link FeeMarketEIP1559Transaction.fromSerializedTx})\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link FeeMarketEIP1559Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return FeeMarketEIP1559Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS]`\n */\n public static fromValuesArray(values: FeeMarketEIP1559ValuesArray, opts: TxOptions = {}) {\n if (values.length !== 9 && values.length !== 12) {\n throw new Error(\n 'Invalid EIP-1559 transaction. Only expecting 9 values (for unsigned tx) or 12 values (for signed tx).'\n )\n }\n\n const [\n chainId,\n nonce,\n maxPriorityFeePerGas,\n maxFeePerGas,\n gasLimit,\n to,\n value,\n data,\n accessList,\n v,\n r,\n s,\n ] = values\n\n validateNoLeadingZeroes({ nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, value, v, r, s })\n\n return new FeeMarketEIP1559Transaction(\n {\n chainId: new BN(chainId),\n nonce,\n maxPriorityFeePerGas,\n maxFeePerGas,\n gasLimit,\n to,\n value,\n data,\n accessList: accessList ?? [],\n v: v !== undefined ? new BN(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: FeeMarketEIP1559TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE }, opts)\n const { chainId, accessList, maxFeePerGas, maxPriorityFeePerGas } = txData\n\n this.common = this._getCommon(opts.common, chainId)\n this.chainId = this.common.chainIdBN()\n\n if (!this.common.isActivatedEIP(1559)) {\n throw new Error('EIP-1559 not enabled on Common')\n }\n this.activeCapabilities = this.activeCapabilities.concat([1559, 2718, 2930])\n\n // Populate the access list fields\n const accessListData = AccessLists.getAccessListData(accessList ?? [])\n this.accessList = accessListData.accessList\n this.AccessListJSON = accessListData.AccessListJSON\n // Verify the access list format.\n AccessLists.verifyAccessList(this.accessList)\n\n this.maxFeePerGas = new BN(toBuffer(maxFeePerGas === '' ? '0x' : maxFeePerGas))\n this.maxPriorityFeePerGas = new BN(\n toBuffer(maxPriorityFeePerGas === '' ? '0x' : maxPriorityFeePerGas)\n )\n\n this._validateCannotExceedMaxInteger({\n maxFeePerGas: this.maxFeePerGas,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n })\n\n if (this.gasLimit.mul(this.maxFeePerGas).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gasLimit * maxFeePerGas cannot exceed MAX_INTEGER (2^256-1)')\n throw new Error(msg)\n }\n\n if (this.maxFeePerGas.lt(this.maxPriorityFeePerGas)) {\n const msg = this._errorMsg(\n 'maxFeePerGas cannot be less than maxPriorityFeePerGas (The total must be the larger of the two)'\n )\n throw new Error(msg)\n }\n\n if (this.v && !this.v.eqn(0) && !this.v.eqn(1)) {\n const msg = this._errorMsg('The y-parity of the transaction should either be 0 or 1')\n throw new Error(msg)\n }\n\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n const cost = super.getDataFee()\n cost.iaddn(AccessLists.getDataFeeEIP2930(this.accessList, this.common))\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: cost,\n hardfork: this.common.hardfork(),\n }\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n * @param baseFee The base fee of the block (will be set to 0 if not provided)\n */\n getUpfrontCost(baseFee: BN = new BN(0)): BN {\n const inclusionFeePerGas = BN.min(this.maxPriorityFeePerGas, this.maxFeePerGas.sub(baseFee))\n const gasPrice = inclusionFeePerGas.add(baseFee)\n return this.gasLimit.mul(gasPrice).add(this.value)\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the EIP-1559 transaction, in order.\n *\n * Format: `[chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS]`\n *\n * Use {@link FeeMarketEIP1559Transaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link FeeMarketEIP1559Transaction.getMessageToSign}.\n */\n raw(): FeeMarketEIP1559ValuesArray {\n return [\n bnToUnpaddedBuffer(this.chainId),\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.maxPriorityFeePerGas),\n bnToUnpaddedBuffer(this.maxFeePerGas),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the EIP-1559 transaction.\n *\n * Format: `0x02 || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS])`\n *\n * Note that in contrast to the legacy tx serialization format this is not\n * valid RLP any more due to the raw tx type preceding and concatenated to\n * the RLP encoding of the values.\n */\n serialize(): Buffer {\n const base = this.raw()\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n }\n\n /**\n * Returns the serialized unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: in contrast to the legacy tx the raw message format is already\n * serialized and doesn't need to be RLP encoded any more.\n *\n * ```javascript\n * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage = true): Buffer {\n const base = this.raw().slice(0, 9)\n const message = Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n if (hashMessage) {\n return keccak256(message)\n } else {\n return message\n }\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link FeeMarketEIP1559Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n public hash(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n throw new Error(msg)\n }\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = keccak256(this.serialize())\n }\n return this.cache.hash\n }\n\n return keccak256(this.serialize())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n public getMessageToVerifySignature(): Buffer {\n return this.getMessageToSign()\n }\n\n /**\n * Returns the public key of the sender\n */\n public getSenderPublicKey(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call this method if transaction is not signed')\n throw new Error(msg)\n }\n\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { v, r, s } = this\n try {\n return ecrecover(\n msgHash,\n v!.addn(27), // Recover the 27 which was stripped from ecsign\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!)\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n _processSignature(v: number, r: Buffer, s: Buffer) {\n const opts = { ...this.txOptions, common: this.common }\n\n return FeeMarketEIP1559Transaction.fromTxData(\n {\n chainId: this.chainId,\n nonce: this.nonce,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n maxFeePerGas: this.maxFeePerGas,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new BN(v - 27), // This looks extremely hacky: ethereumjs-util actually adds 27 to the value, the recovery bit is either 0 or 1.\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n toJSON(): JsonTx {\n const accessListJSON = AccessLists.getAccessListJSON(this.accessList)\n\n return {\n chainId: bnToHex(this.chainId),\n nonce: bnToHex(this.nonce),\n maxPriorityFeePerGas: bnToHex(this.maxPriorityFeePerGas),\n maxFeePerGas: bnToHex(this.maxFeePerGas),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n errorStr += ` maxFeePerGas=${this.maxFeePerGas} maxPriorityFeePerGas=${this.maxPriorityFeePerGas}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n keccak256,\n MAX_INTEGER,\n rlp,\n toBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { BaseTransaction } from './baseTransaction'\nimport {\n AccessList,\n AccessListBuffer,\n AccessListEIP2930TxData,\n AccessListEIP2930ValuesArray,\n JsonTx,\n TxOptions,\n N_DIV_2,\n} from './types'\n\nimport { AccessLists, checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 1\nconst TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')\n\n/**\n * Typed transaction with optional access lists\n *\n * - TransactionType: 1\n * - EIP: [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)\n */\nexport default class AccessListEIP2930Transaction extends BaseTransaction {\n public readonly chainId: BN\n public readonly accessList: AccessListBuffer\n public readonly AccessListJSON: AccessList\n public readonly gasPrice: BN\n\n public readonly common: Common\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK = 'berlin'\n\n /**\n * EIP-2930 alias for `r`\n *\n * @deprecated use `r` instead\n */\n get senderR() {\n return this.r\n }\n\n /**\n * EIP-2930 alias for `s`\n *\n * @deprecated use `s` instead\n */\n get senderS() {\n return this.s\n }\n\n /**\n * EIP-2930 alias for `v`\n *\n * @deprecated use `v` instead\n */\n get yParity() {\n return this.v\n }\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * v, r, s }\n *\n * Notes:\n * - `chainId` will be set automatically if not provided\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {\n return new AccessListEIP2930Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\n `Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${serialized\n .slice(0, 1)\n .toString('hex')}`\n )\n }\n\n const values = rlp.decode(serialized.slice(1))\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array')\n }\n\n return AccessListEIP2930Transaction.fromValuesArray(values as any, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link AccessListEIP2930Transaction.fromSerializedTx})\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link AccessListEIP2930Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return AccessListEIP2930Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)]`\n */\n public static fromValuesArray(values: AccessListEIP2930ValuesArray, opts: TxOptions = {}) {\n if (values.length !== 8 && values.length !== 11) {\n throw new Error(\n 'Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx).'\n )\n }\n\n const [chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, v, r, s] = values\n\n validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, v, r, s })\n\n const emptyAccessList: AccessList = []\n\n return new AccessListEIP2930Transaction(\n {\n chainId: new BN(chainId),\n nonce,\n gasPrice,\n gasLimit,\n to,\n value,\n data,\n accessList: accessList ?? emptyAccessList,\n v: v !== undefined ? new BN(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE }, opts)\n const { chainId, accessList, gasPrice } = txData\n\n this.common = this._getCommon(opts.common, chainId)\n this.chainId = this.common.chainIdBN()\n\n // EIP-2718 check is done in Common\n if (!this.common.isActivatedEIP(2930)) {\n throw new Error('EIP-2930 not enabled on Common')\n }\n this.activeCapabilities = this.activeCapabilities.concat([2718, 2930])\n\n // Populate the access list fields\n const accessListData = AccessLists.getAccessListData(accessList ?? [])\n this.accessList = accessListData.accessList\n this.AccessListJSON = accessListData.AccessListJSON\n // Verify the access list format.\n AccessLists.verifyAccessList(this.accessList)\n\n this.gasPrice = new BN(toBuffer(gasPrice === '' ? '0x' : gasPrice))\n\n this._validateCannotExceedMaxInteger({\n gasPrice: this.gasPrice,\n })\n\n if (this.gasPrice.mul(this.gasLimit).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gasLimit * gasPrice cannot exceed MAX_INTEGER')\n throw new Error(msg)\n }\n if (this.v && !this.v.eqn(0) && !this.v.eqn(1)) {\n const msg = this._errorMsg('The y-parity of the transaction should either be 0 or 1')\n throw new Error(msg)\n }\n\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n const cost = super.getDataFee()\n cost.iaddn(AccessLists.getDataFeeEIP2930(this.accessList, this.common))\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: cost,\n hardfork: this.common.hardfork(),\n }\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n getUpfrontCost(): BN {\n return this.gasLimit.mul(this.gasPrice).add(this.value)\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the EIP-2930 transaction, in order.\n *\n * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)]`\n *\n * Use {@link AccessListEIP2930Transaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link AccessListEIP2930Transaction.getMessageToSign}.\n */\n raw(): AccessListEIP2930ValuesArray {\n return [\n bnToUnpaddedBuffer(this.chainId),\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the EIP-2930 transaction.\n *\n * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)])`\n *\n * Note that in contrast to the legacy tx serialization format this is not\n * valid RLP any more due to the raw tx type preceding and concatenated to\n * the RLP encoding of the values.\n */\n serialize(): Buffer {\n const base = this.raw()\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n }\n\n /**\n * Returns the serialized unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: in contrast to the legacy tx the raw message format is already\n * serialized and doesn't need to be RLP encoded any more.\n *\n * ```javascript\n * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage = true): Buffer {\n const base = this.raw().slice(0, 8)\n const message = Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n if (hashMessage) {\n return keccak256(message)\n } else {\n return message\n }\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link AccessListEIP2930Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n public hash(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n throw new Error(msg)\n }\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = keccak256(this.serialize())\n }\n return this.cache.hash\n }\n\n return keccak256(this.serialize())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n public getMessageToVerifySignature(): Buffer {\n return this.getMessageToSign()\n }\n\n /**\n * Returns the public key of the sender\n */\n public getSenderPublicKey(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call this method if transaction is not signed')\n throw new Error(msg)\n }\n\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { yParity, r, s } = this\n try {\n return ecrecover(\n msgHash,\n yParity!.addn(27), // Recover the 27 which was stripped from ecsign\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!)\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n _processSignature(v: number, r: Buffer, s: Buffer) {\n const opts = { ...this.txOptions, common: this.common }\n\n return AccessListEIP2930Transaction.fromTxData(\n {\n chainId: this.chainId,\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new BN(v - 27), // This looks extremely hacky: ethereumjs-util actually adds 27 to the value, the recovery bit is either 0 or 1.\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n toJSON(): JsonTx {\n const accessListJSON = AccessLists.getAccessListJSON(this.accessList)\n\n return {\n chainId: bnToHex(this.chainId),\n nonce: bnToHex(this.nonce),\n gasPrice: bnToHex(this.gasPrice),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n // Keep ? for this.accessList since this otherwise causes Hardhat E2E tests to fail\n errorStr += ` gasPrice=${this.gasPrice} accessListCount=${this.accessList?.length ?? 0}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","export { default as Transaction } from './legacyTransaction'\nexport { default as AccessListEIP2930Transaction } from './eip2930Transaction'\nexport { default as TransactionFactory } from './transactionFactory'\nexport { default as FeeMarketEIP1559Transaction } from './eip1559Transaction'\nexport * from './types'\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n MAX_INTEGER,\n rlp,\n rlphash,\n toBuffer,\n unpadBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport { TxOptions, TxData, JsonTx, N_DIV_2, TxValuesArray, Capability } from './types'\nimport { BaseTransaction } from './baseTransaction'\nimport Common from '@ethereumjs/common'\nimport { checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 0\n\n/**\n * An Ethereum non-typed (legacy) transaction\n */\nexport default class Transaction extends BaseTransaction {\n public readonly gasPrice: BN\n\n public readonly common: Common\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { nonce, gasPrice, gasLimit, to, value, data, v, r, s }\n *\n * Notes:\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: TxData, opts: TxOptions = {}) {\n return new Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input. Must be array')\n }\n\n return this.fromValuesArray(values, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link Transaction.fromSerializedTx})\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`\n */\n public static fromValuesArray(values: TxValuesArray, opts: TxOptions = {}) {\n // If length is not 6, it has length 9. If v/r/s are empty Buffers, it is still an unsigned transaction\n // This happens if you get the RLP data from `raw()`\n if (values.length !== 6 && values.length !== 9) {\n throw new Error(\n 'Invalid transaction. Only expecting 6 values (for unsigned tx) or 9 values (for signed tx).'\n )\n }\n\n const [nonce, gasPrice, gasLimit, to, value, data, v, r, s] = values\n\n validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, v, r, s })\n\n return new Transaction(\n {\n nonce,\n gasPrice,\n gasLimit,\n to,\n value,\n data,\n v,\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE }, opts)\n\n this.common = this._validateTxV(this.v, opts.common)\n\n this.gasPrice = new BN(toBuffer(txData.gasPrice === '' ? '0x' : txData.gasPrice))\n\n if (this.gasPrice.mul(this.gasLimit).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gas limit * gasPrice cannot exceed MAX_INTEGER (2^256-1)')\n throw new Error(msg)\n }\n this._validateCannotExceedMaxInteger({ gasPrice: this.gasPrice })\n\n if (this.common.gteHardfork('spuriousDragon')) {\n if (!this.isSigned()) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n } else {\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36\n // then when computing the hash of a transaction for purposes of signing or recovering\n // instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data)\n // hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n const v = this.v!\n const chainIdDoubled = this.common.chainIdBN().muln(2)\n\n // v and chain ID meet EIP-155 conditions\n if (v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n }\n }\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the legacy transaction, in order.\n *\n * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`\n *\n * For legacy txs this is also the correct format to add transactions\n * to a block with {@link Block.fromValuesArray} (use the `serialize()` method\n * for typed txs).\n *\n * For an unsigned tx this method returns the empty Buffer values\n * for the signature parameters `v`, `r` and `s`. For an EIP-155 compliant\n * representation have a look at {@link Transaction.getMessageToSign}.\n */\n raw(): TxValuesArray {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the legacy transaction.\n *\n * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link Transaction.getMessageToSign}.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n private _getMessageToSign() {\n const values = [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n ]\n\n if (this.supports(Capability.EIP155ReplayProtection)) {\n values.push(toBuffer(this.common.chainIdBN()))\n values.push(unpadBuffer(toBuffer(0)))\n values.push(unpadBuffer(toBuffer(0)))\n }\n\n return values\n }\n\n /**\n * Returns the unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: the raw message message format for the legacy tx is not RLP encoded\n * and you might need to do yourself with:\n *\n * ```javascript\n * import { rlp } from 'ethereumjs-util'\n * const message = tx.getMessageToSign(false)\n * const serializedMessage = rlp.encode(message) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage: false): Buffer[]\n getMessageToSign(hashMessage?: true): Buffer\n getMessageToSign(hashMessage = true) {\n const message = this._getMessageToSign()\n if (hashMessage) {\n return rlphash(message)\n } else {\n return message\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: super.getDataFee(),\n hardfork: this.common.hardfork(),\n }\n }\n\n return super.getDataFee()\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n getUpfrontCost(): BN {\n return this.gasLimit.mul(this.gasPrice).add(this.value)\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n hash(): Buffer {\n // In contrast to the tx type transaction implementations the `hash()` function\n // for the legacy tx does not throw if the tx is not signed.\n // This has been considered for inclusion but lead to unexpected backwards\n // compatibility problems (no concrete reference found, needs validation).\n //\n // For context see also https://github.com/ethereumjs/ethereumjs-monorepo/pull/1445,\n // September, 2021 as well as work done before.\n //\n // This should be updated along the next major version release by adding:\n //\n //if (!this.isSigned()) {\n // const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n // throw new Error(msg)\n //}\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = rlphash(this.raw())\n }\n return this.cache.hash\n }\n\n return rlphash(this.raw())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n getMessageToVerifySignature() {\n if (!this.isSigned()) {\n const msg = this._errorMsg('This transaction is not signed')\n throw new Error(msg)\n }\n const message = this._getMessageToSign()\n return rlphash(message)\n }\n\n /**\n * Returns the public key of the sender\n */\n getSenderPublicKey(): Buffer {\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { v, r, s } = this\n try {\n return ecrecover(\n msgHash,\n v!,\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!),\n this.supports(Capability.EIP155ReplayProtection) ? this.common.chainIdBN() : undefined\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n /**\n * Process the v, r, s values from the `sign` method of the base transaction.\n */\n protected _processSignature(v: number, r: Buffer, s: Buffer) {\n const vBN = new BN(v)\n if (this.supports(Capability.EIP155ReplayProtection)) {\n vBN.iadd(this.common.chainIdBN().muln(2).addn(8))\n }\n\n const opts = { ...this.txOptions, common: this.common }\n\n return Transaction.fromTxData(\n {\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n v: vBN,\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction.\n */\n toJSON(): JsonTx {\n return {\n nonce: bnToHex(this.nonce),\n gasPrice: bnToHex(this.gasPrice),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Validates tx's `v` value\n */\n private _validateTxV(v?: BN, common?: Common): Common {\n // Check for valid v values in the scope of a signed legacy tx\n if (v !== undefined) {\n // v is 1. not matching the EIP-155 chainId included case and...\n // v is 2. not matching the classic v=27 or v=28 case\n if (v.ltn(37) && !v.eqn(27) && !v.eqn(28)) {\n throw new Error(\n `Legacy txs need either v = 27/28 or v >= 37 (EIP-155 replay protection), got v = ${v}`\n )\n }\n }\n\n let chainIdBN\n // No unsigned tx and EIP-155 activated and chain ID included\n if (\n v !== undefined &&\n (!common || common.gteHardfork('spuriousDragon')) &&\n !v.eqn(27) &&\n !v.eqn(28)\n ) {\n if (common) {\n const chainIdDoubled = common.chainIdBN().muln(2)\n const isValidEIP155V = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))\n\n if (!isValidEIP155V) {\n throw new Error(\n `Incompatible EIP155-based V ${v} and chain id ${common.chainIdBN()}. See the Common parameter of the Transaction constructor to set the chain id.`\n )\n }\n } else {\n // Derive the original chain ID\n let numSub\n if (v.subn(35).isEven()) {\n numSub = 35\n } else {\n numSub = 36\n }\n // Use derived chain ID to create a proper Common\n chainIdBN = v.subn(numSub).divn(2)\n }\n }\n return this._getCommon(common, chainIdBN)\n }\n\n /**\n * @deprecated if you have called this internal method please use `tx.supports(Capabilities.EIP155ReplayProtection)` instead\n */\n private _unsignedTxImplementsEIP155() {\n return this.common.gteHardfork('spuriousDragon')\n }\n\n /**\n * @deprecated if you have called this internal method please use `tx.supports(Capabilities.EIP155ReplayProtection)` instead\n */\n private _signedTxImplementsEIP155() {\n if (!this.isSigned()) {\n const msg = this._errorMsg('This transaction is not signed')\n throw new Error(msg)\n }\n const onEIP155BlockOrLater = this.common.gteHardfork('spuriousDragon')\n\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36, then when computing the hash of a transaction for purposes of signing or recovering, instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data), hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n const v = this.v!\n\n const chainIdDoubled = this.common.chainIdBN().muln(2)\n\n const vAndChainIdMeetEIP155Conditions =\n v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))\n\n return vAndChainIdMeetEIP155Conditions && onEIP155BlockOrLater\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n errorStr += ` gasPrice=${this.gasPrice}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","import { BN, toBuffer } from 'ethereumjs-util'\nimport {\n TxOptions,\n TypedTransaction,\n TxData,\n AccessListEIP2930TxData,\n FeeMarketEIP1559TxData,\n} from './types'\nimport { Transaction, AccessListEIP2930Transaction, FeeMarketEIP1559Transaction } from '.'\nimport Common from '@ethereumjs/common'\n\nexport default class TransactionFactory {\n // It is not possible to instantiate a TransactionFactory object.\n private constructor() {}\n\n /**\n * Create a transaction from a `txData` object\n *\n * @param txData - The transaction data. The `type` field will determine which transaction type is returned (if undefined, creates a legacy transaction)\n * @param txOptions - Options to pass on to the constructor of the transaction\n */\n public static fromTxData(\n txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData,\n txOptions: TxOptions = {}\n ): TypedTransaction {\n if (!('type' in txData) || txData.type === undefined) {\n // Assume legacy transaction\n return Transaction.fromTxData(txData, txOptions)\n } else {\n const txType = new BN(toBuffer(txData.type)).toNumber()\n if (txType === 0) {\n return Transaction.fromTxData(txData, txOptions)\n } else if (txType === 1) {\n return AccessListEIP2930Transaction.fromTxData(txData, txOptions)\n } else if (txType === 2) {\n return FeeMarketEIP1559Transaction.fromTxData(txData, txOptions)\n } else {\n throw new Error(`Tx instantiation with type ${txType} not supported`)\n }\n }\n }\n\n /**\n * This method tries to decode serialized data.\n *\n * @param data - The data Buffer\n * @param txOptions - The transaction options\n */\n public static fromSerializedData(data: Buffer, txOptions: TxOptions = {}): TypedTransaction {\n if (data[0] <= 0x7f) {\n // Determine the type.\n let EIP: number\n switch (data[0]) {\n case 1:\n EIP = 2930\n break\n case 2:\n EIP = 1559\n break\n default:\n throw new Error(`TypedTransaction with ID ${data[0]} unknown`)\n }\n if (EIP === 1559) {\n return FeeMarketEIP1559Transaction.fromSerializedTx(data, txOptions)\n } else {\n // EIP === 2930\n return AccessListEIP2930Transaction.fromSerializedTx(data, txOptions)\n }\n } else {\n return Transaction.fromSerializedTx(data, txOptions)\n }\n }\n\n /**\n * When decoding a BlockBody, in the transactions field, a field is either:\n * A Buffer (a TypedTransaction - encoded as TransactionType || rlp(TransactionPayload))\n * A Buffer[] (Legacy Transaction)\n * This method returns the right transaction.\n *\n * @param data - A Buffer or Buffer[]\n * @param txOptions - The transaction options\n */\n public static fromBlockBodyData(data: Buffer | Buffer[], txOptions: TxOptions = {}) {\n if (Buffer.isBuffer(data)) {\n return this.fromSerializedData(data, txOptions)\n } else if (Array.isArray(data)) {\n // It is a legacy transaction\n return Transaction.fromValuesArray(data, txOptions)\n } else {\n throw new Error('Cannot decode transaction: unknown type input')\n }\n }\n\n /**\n * This helper method allows one to retrieve the class which matches the transactionID\n * If transactionID is undefined, returns the legacy transaction class.\n * @deprecated - This method is deprecated and will be removed on the next major release\n * @param transactionID\n * @param _common - This option is not used\n */\n public static getTransactionClass(transactionID: number = 0, _common?: Common) {\n const legacyTxn = transactionID == 0 || (transactionID >= 0x80 && transactionID <= 0xff)\n\n if (legacyTxn) {\n return Transaction\n }\n\n switch (transactionID) {\n case 1:\n return AccessListEIP2930Transaction\n case 2:\n return FeeMarketEIP1559Transaction\n default:\n throw new Error(`TypedTransaction with ID ${transactionID} unknown`)\n }\n }\n}\n","import { BN, AddressLike, BNLike, BufferLike, PrefixedHexString } from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { default as Transaction } from './legacyTransaction'\nimport { default as AccessListEIP2930Transaction } from './eip2930Transaction'\nimport { default as FeeMarketEIP1559Transaction } from './eip1559Transaction'\n\n/**\n * Can be used in conjunction with {@link Transaction.supports}\n * to query on tx capabilities\n */\nexport enum Capability {\n /**\n * Tx supports EIP-155 replay protection\n * See: [155](https://eips.ethereum.org/EIPS/eip-155) Replay Attack Protection EIP\n */\n EIP155ReplayProtection = 155,\n\n /**\n * Tx supports EIP-1559 gas fee market mechansim\n * See: [1559](https://eips.ethereum.org/EIPS/eip-1559) Fee Market EIP\n */\n EIP1559FeeMarket = 1559,\n\n /**\n * Tx is a typed transaction as defined in EIP-2718\n * See: [2718](https://eips.ethereum.org/EIPS/eip-2718) Transaction Type EIP\n */\n EIP2718TypedTransaction = 2718,\n\n /**\n * Tx supports access list generation as defined in EIP-2930\n * See: [2930](https://eips.ethereum.org/EIPS/eip-2930) Access Lists EIP\n */\n EIP2930AccessLists = 2930,\n}\n\n/**\n * The options for initializing a {@link Transaction}.\n */\nexport interface TxOptions {\n /**\n * A {@link Common} object defining the chain and hardfork for the transaction.\n *\n * Object will be internally copied so that tx behavior don't incidentally\n * change on future HF changes.\n *\n * Default: {@link Common} object set to `mainnet` and the default hardfork as defined in the {@link Common} class.\n *\n * Current default hardfork: `istanbul`\n */\n common?: Common\n /**\n * A transaction object by default gets frozen along initialization. This gives you\n * strong additional security guarantees on the consistency of the tx parameters.\n * It also enables tx hash caching when the `hash()` method is called multiple times.\n *\n * If you need to deactivate the tx freeze - e.g. because you want to subclass tx and\n * add additional properties - it is strongly encouraged that you do the freeze yourself\n * within your code instead.\n *\n * Default: true\n */\n freeze?: boolean\n}\n\n/*\n * Access List types\n */\n\nexport type AccessListItem = {\n address: PrefixedHexString\n storageKeys: PrefixedHexString[]\n}\n\n/*\n * An Access List as a tuple of [address: Buffer, storageKeys: Buffer[]]\n */\nexport type AccessListBufferItem = [Buffer, Buffer[]]\nexport type AccessListBuffer = AccessListBufferItem[]\nexport type AccessList = AccessListItem[]\n\nexport function isAccessListBuffer(\n input: AccessListBuffer | AccessList\n): input is AccessListBuffer {\n if (input.length === 0) {\n return true\n }\n const firstItem = input[0]\n if (Array.isArray(firstItem)) {\n return true\n }\n return false\n}\n\nexport function isAccessList(input: AccessListBuffer | AccessList): input is AccessList {\n return !isAccessListBuffer(input) // This is exactly the same method, except the output is negated.\n}\n\n/**\n * Encompassing type for all transaction types.\n *\n * Note that this also includes legacy txs which are\n * referenced as {@link Transaction} for compatibility reasons.\n */\nexport type TypedTransaction =\n | Transaction\n | AccessListEIP2930Transaction\n | FeeMarketEIP1559Transaction\n\n/**\n * Legacy {@link Transaction} Data\n */\nexport type TxData = {\n /**\n * The transaction's nonce.\n */\n nonce?: BNLike\n\n /**\n * The transaction's gas price.\n */\n gasPrice?: BNLike\n\n /**\n * The transaction's gas limit.\n */\n gasLimit?: BNLike\n\n /**\n * The transaction's the address is sent to.\n */\n to?: AddressLike\n\n /**\n * The amount of Ether sent.\n */\n value?: BNLike\n\n /**\n * This will contain the data of the message or the init of a contract.\n */\n data?: BufferLike\n\n /**\n * EC recovery ID.\n */\n v?: BNLike\n\n /**\n * EC signature parameter.\n */\n r?: BNLike\n\n /**\n * EC signature parameter.\n */\n s?: BNLike\n\n /**\n * The transaction type\n */\n\n type?: BNLike\n}\n\n/**\n * {@link AccessListEIP2930Transaction} data.\n */\nexport interface AccessListEIP2930TxData extends TxData {\n /**\n * The transaction's chain ID\n */\n chainId?: BNLike\n\n /**\n * The access list which contains the addresses/storage slots which the transaction wishes to access\n */\n accessList?: AccessListBuffer | AccessList\n}\n\n/**\n * {@link FeeMarketEIP1559Transaction} data.\n */\nexport interface FeeMarketEIP1559TxData extends AccessListEIP2930TxData {\n /**\n * The transaction's gas price, inherited from {@link Transaction}. This property is not used for EIP1559\n * transactions and should always be undefined for this specific transaction type.\n */\n gasPrice?: never\n /**\n * The maximum inclusion fee per gas (this fee is given to the miner)\n */\n maxPriorityFeePerGas?: BNLike\n /**\n * The maximum total fee\n */\n maxFeePerGas?: BNLike\n}\n\n/**\n * Buffer values array for a legacy {@link Transaction}\n */\nexport type TxValuesArray = Buffer[]\n\n/**\n * Buffer values array for an {@link AccessListEIP2930Transaction}\n */\nexport type AccessListEIP2930ValuesArray = [\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n AccessListBuffer,\n Buffer?,\n Buffer?,\n Buffer?\n]\n\n/**\n * Buffer values array for a {@link FeeMarketEIP1559Transaction}\n */\nexport type FeeMarketEIP1559ValuesArray = [\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n AccessListBuffer,\n Buffer?,\n Buffer?,\n Buffer?\n]\n\ntype JsonAccessListItem = { address: string; storageKeys: string[] }\n\n/**\n * Generic interface for all tx types with a\n * JSON representation of a transaction.\n *\n * Note that all values are marked as optional\n * and not all the values are present on all tx types\n * (an EIP1559 tx e.g. lacks a `gasPrice`).\n */\nexport interface JsonTx {\n nonce?: string\n gasPrice?: string\n gasLimit?: string\n to?: string\n data?: string\n v?: string\n r?: string\n s?: string\n value?: string\n chainId?: string\n accessList?: JsonAccessListItem[]\n type?: string\n maxPriorityFeePerGas?: string\n maxFeePerGas?: string\n}\n\n/**\n * A const defining secp256k1n/2\n */\nexport const N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n)\n","import Common from '@ethereumjs/common'\nimport { bufferToHex, setLengthLeft, toBuffer } from 'ethereumjs-util'\nimport { AccessList, AccessListBuffer, AccessListItem, isAccessList } from './types'\n\nexport function checkMaxInitCodeSize(common: Common, length: number) {\n if (length > common.param('vm', 'maxInitCodeSize')) {\n throw new Error(\n `the initcode size of this transaction is too large: it is ${length} while the max is ${common.param(\n 'vm',\n 'maxInitCodeSize'\n )}`\n )\n }\n}\n\nexport class AccessLists {\n public static getAccessListData(accessList: AccessListBuffer | AccessList) {\n let AccessListJSON\n let bufferAccessList\n if (accessList && isAccessList(accessList)) {\n AccessListJSON = accessList\n const newAccessList: AccessListBuffer = []\n\n for (let i = 0; i < accessList.length; i++) {\n const item: AccessListItem = accessList[i]\n const addressBuffer = toBuffer(item.address)\n const storageItems: Buffer[] = []\n for (let index = 0; index < item.storageKeys.length; index++) {\n storageItems.push(toBuffer(item.storageKeys[index]))\n }\n newAccessList.push([addressBuffer, storageItems])\n }\n bufferAccessList = newAccessList\n } else {\n bufferAccessList = accessList ?? []\n // build the JSON\n const json: AccessList = []\n for (let i = 0; i < bufferAccessList.length; i++) {\n const data = bufferAccessList[i]\n const address = bufferToHex(data[0])\n const storageKeys: string[] = []\n for (let item = 0; item < data[1].length; item++) {\n storageKeys.push(bufferToHex(data[1][item]))\n }\n const jsonItem: AccessListItem = {\n address,\n storageKeys,\n }\n json.push(jsonItem)\n }\n AccessListJSON = json\n }\n\n return {\n AccessListJSON,\n accessList: bufferAccessList,\n }\n }\n\n public static verifyAccessList(accessList: AccessListBuffer) {\n for (let key = 0; key < accessList.length; key++) {\n const accessListItem = accessList[key]\n const address = accessListItem[0]\n const storageSlots = accessListItem[1]\n if ((accessListItem)[2] !== undefined) {\n throw new Error(\n 'Access list item cannot have 3 elements. It can only have an address, and an array of storage slots.'\n )\n }\n if (address.length != 20) {\n throw new Error('Invalid EIP-2930 transaction: address length should be 20 bytes')\n }\n for (let storageSlot = 0; storageSlot < storageSlots.length; storageSlot++) {\n if (storageSlots[storageSlot].length != 32) {\n throw new Error('Invalid EIP-2930 transaction: storage slot length should be 32 bytes')\n }\n }\n }\n }\n\n public static getAccessListJSON(accessList: AccessListBuffer) {\n const accessListJSON = []\n for (let index = 0; index < accessList.length; index++) {\n const item: any = accessList[index]\n const JSONItem: any = {\n address: '0x' + setLengthLeft(item[0], 20).toString('hex'),\n storageKeys: [],\n }\n const storageSlots: Buffer[] = item[1]\n for (let slot = 0; slot < storageSlots.length; slot++) {\n const storageSlot = storageSlots[slot]\n JSONItem.storageKeys.push('0x' + setLengthLeft(storageSlot, 32).toString('hex'))\n }\n accessListJSON.push(JSONItem)\n }\n return accessListJSON\n }\n\n public static getDataFeeEIP2930(accessList: AccessListBuffer, common: Common): number {\n const accessListStorageKeyCost = common.param('gasPrices', 'accessListStorageKeyCost')\n const accessListAddressCost = common.param('gasPrices', 'accessListAddressCost')\n\n let slots = 0\n for (let index = 0; index < accessList.length; index++) {\n const item = accessList[index]\n const storageSlots = item[1]\n slots += storageSlots.length\n }\n\n const addresses = accessList.length\n return addresses * accessListAddressCost + slots * accessListStorageKeyCost\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\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 * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n\n if (vBN.eqn(0) || vBN.eqn(1)) return toType(v, TypeOutput.BN)\n\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes\n * it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\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","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","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\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","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","\"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\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","\"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","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\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","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","export const version = \"transactions/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",null,"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,"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","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, 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\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // 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/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 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_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\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 } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\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) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore_1 = require(\"./Semaphore\");\nvar Mutex = /** @class */ (function () {\n function Mutex() {\n this._semaphore = new Semaphore_1.default(1);\n }\n Mutex.prototype.acquire = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, releaser;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._semaphore.acquire()];\n case 1:\n _a = _b.sent(), releaser = _a[1];\n return [2 /*return*/, releaser];\n }\n });\n });\n };\n Mutex.prototype.runExclusive = function (callback) {\n return this._semaphore.runExclusive(function () { return callback(); });\n };\n Mutex.prototype.isLocked = function () {\n return this._semaphore.isLocked();\n };\n Mutex.prototype.release = function () {\n this._semaphore.release();\n };\n return Mutex;\n}());\nexports.default = Mutex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore = /** @class */ (function () {\n function Semaphore(_maxConcurrency) {\n this._maxConcurrency = _maxConcurrency;\n this._queue = [];\n if (_maxConcurrency <= 0) {\n throw new Error('semaphore must be initialized to a positive value');\n }\n this._value = _maxConcurrency;\n }\n Semaphore.prototype.acquire = function () {\n var _this = this;\n var locked = this.isLocked();\n var ticket = new Promise(function (r) { return _this._queue.push(r); });\n if (!locked)\n this._dispatch();\n return ticket;\n };\n Semaphore.prototype.runExclusive = function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, value, release;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.acquire()];\n case 1:\n _a = _b.sent(), value = _a[0], release = _a[1];\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 4, 5]);\n return [4 /*yield*/, callback(value)];\n case 3: return [2 /*return*/, _b.sent()];\n case 4:\n release();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Semaphore.prototype.isLocked = function () {\n return this._value <= 0;\n };\n Semaphore.prototype.release = function () {\n if (this._maxConcurrency > 1) {\n throw new Error('this method is unavailabel on semaphores with concurrency > 1; use the scoped release returned by acquire instead');\n }\n if (this._currentReleaser) {\n var releaser = this._currentReleaser;\n this._currentReleaser = undefined;\n releaser();\n }\n };\n Semaphore.prototype._dispatch = function () {\n var _this = this;\n var nextConsumer = this._queue.shift();\n if (!nextConsumer)\n return;\n var released = false;\n this._currentReleaser = function () {\n if (released)\n return;\n released = true;\n _this._value++;\n _this._dispatch();\n };\n nextConsumer([this._value--, this._currentReleaser]);\n };\n return Semaphore;\n}());\nexports.default = Semaphore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = exports.Semaphore = exports.Mutex = void 0;\nvar Mutex_1 = require(\"./Mutex\");\nObject.defineProperty(exports, \"Mutex\", { enumerable: true, get: function () { return Mutex_1.default; } });\nvar Semaphore_1 = require(\"./Semaphore\");\nObject.defineProperty(exports, \"Semaphore\", { enumerable: true, get: function () { return Semaphore_1.default; } });\nvar withTimeout_1 = require(\"./withTimeout\");\nObject.defineProperty(exports, \"withTimeout\", { enumerable: true, get: function () { return withTimeout_1.withTimeout; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = void 0;\nvar tslib_1 = require(\"tslib\");\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction withTimeout(sync, timeout, timeoutError) {\n var _this = this;\n if (timeoutError === void 0) { timeoutError = new Error('timeout'); }\n return {\n acquire: function () {\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var isTimeout, ticket, release;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTimeout = false;\n setTimeout(function () {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n return [4 /*yield*/, sync.acquire()];\n case 1:\n ticket = _a.sent();\n if (isTimeout) {\n release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n resolve(ticket);\n }\n return [2 /*return*/];\n }\n });\n }); });\n },\n runExclusive: function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var release, ticket;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n release = function () { return undefined; };\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 7, 8]);\n return [4 /*yield*/, this.acquire()];\n case 2:\n ticket = _a.sent();\n if (!Array.isArray(ticket)) return [3 /*break*/, 4];\n release = ticket[1];\n return [4 /*yield*/, callback(ticket[0])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n release = ticket;\n return [4 /*yield*/, callback()];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: return [3 /*break*/, 8];\n case 7:\n release();\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n },\n release: function () {\n sync.release();\n },\n isLocked: function () { return sync.isLocked(); },\n };\n}\nexports.withTimeout = withTimeout;\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.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\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\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n};\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncify;\n\nvar _isObject = require('lodash/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nvar _initialParams = require('./internal/initialParams');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n return (0, _initialParams2.default)(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if ((0, _isObject2.default)(result) && typeof result.then === 'function') {\n result.then(function (value) {\n invokeCallback(callback, null, value);\n }, function (err) {\n invokeCallback(callback, err.message ? err : new Error(err));\n });\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (e) {\n (0, _setImmediate2.default)(rethrow, e);\n }\n}\n\nfunction rethrow(error) {\n throw error;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = eachLimit;\n\nvar _eachOfLimit = require('./internal/eachOfLimit');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _withoutIndex = require('./internal/withoutIndex');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachLimit(coll, limit, iteratee, callback) {\n (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll, iteratee, callback) {\n var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;\n eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);\n};\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _breakLoop = require('./internal/breakLoop');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nvar _eachOfLimit = require('./eachOfLimit');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _doLimit = require('./internal/doLimit');\n\nvar _doLimit2 = _interopRequireDefault(_doLimit);\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./internal/once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _onlyOnce = require('./internal/onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n var index = 0,\n completed = 0,\n length = coll.length;\n if (length === 0) {\n callback(null);\n }\n\n function iteratorCallback(err, value) {\n if (err) {\n callback(err);\n } else if (++completed === length || value === _breakLoop2.default) {\n callback(null);\n }\n }\n\n for (; index < length; index++) {\n iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback));\n }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nvar eachOfGeneric = (0, _doLimit2.default)(_eachOfLimit2.default, Infinity);\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @example\n *\n * var obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"};\n * var configs = {};\n *\n * async.forEachOf(obj, function (value, key, callback) {\n * fs.readFile(__dirname + value, \"utf8\", function (err, data) {\n * if (err) return callback(err);\n * try {\n * configs[key] = JSON.parse(data);\n * } catch (e) {\n * return callback(e);\n * }\n * callback();\n * });\n * }, function (err) {\n * if (err) console.error(err.message);\n * // configs is now a map of JSON data\n * doSomethingWith(configs);\n * });\n */\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = eachOfLimit;\n\nvar _eachOfLimit2 = require('./internal/eachOfLimit');\n\nvar _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eachLimit = require('./eachLimit');\n\nvar _eachLimit2 = _interopRequireDefault(_eachLimit);\n\nvar _doLimit = require('./internal/doLimit');\n\nvar _doLimit2 = _interopRequireDefault(_doLimit);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n *\n * @name eachSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfSeries`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nexports.default = (0, _doLimit2.default)(_eachLimit2.default, 1);\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nexports.default = {};\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = doLimit;\nfunction doLimit(fn, limit) {\n return function (iterable, iteratee, callback) {\n return fn(iterable, limit, iteratee, callback);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = doParallel;\n\nvar _eachOf = require('../eachOf');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction doParallel(fn) {\n return function (obj, iteratee, callback) {\n return fn(_eachOf2.default, obj, (0, _wrapAsync2.default)(iteratee), callback);\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _eachOfLimit;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _iterator = require('./iterator');\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _onlyOnce = require('./onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _breakLoop = require('./breakLoop');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _eachOfLimit(limit) {\n return function (obj, iteratee, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n if (limit <= 0 || !obj) {\n return callback(null);\n }\n var nextElem = (0, _iterator2.default)(obj);\n var done = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n } else if (value === _breakLoop2.default || done && running <= 0) {\n done = true;\n return callback(null);\n } else if (!looping) {\n replenish();\n }\n }\n\n function replenish() {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll) {\n return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();\n};\n\nvar iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (fn) {\n return function () /*...args, callback*/{\n var args = (0, _slice2.default)(arguments);\n var callback = args.pop();\n fn.call(this, args, callback);\n };\n};\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = iterator;\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _getIterator = require('./getIterator');\n\nvar _getIterator2 = _interopRequireDefault(_getIterator);\n\nvar _keys = require('lodash/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? { value: coll[i], key: i } : null;\n };\n}\n\nfunction createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done) return null;\n i++;\n return { value: item.value, key: i };\n };\n}\n\nfunction createObjectIterator(obj) {\n var okeys = (0, _keys2.default)(obj);\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n if (key === '__proto__') {\n return next();\n }\n return i < len ? { value: obj[key], key: key } : null;\n };\n}\n\nfunction iterator(coll) {\n if ((0, _isArrayLike2.default)(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = (0, _getIterator2.default)(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _asyncMap;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncMap(eachfn, arr, iteratee, callback) {\n callback = callback || _noop2.default;\n arr = arr || [];\n var results = [];\n var counter = 0;\n var _iteratee = (0, _wrapAsync2.default)(iteratee);\n\n eachfn(arr, function (value, _, callback) {\n var index = counter++;\n _iteratee(value, function (err, v) {\n results[index] = v;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = once;\nfunction once(fn) {\n return function () {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n return function () {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _parallel;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _parallel(eachfn, tasks, callback) {\n callback = callback || _noop2.default;\n var results = (0, _isArrayLike2.default)(tasks) ? [] : {};\n\n eachfn(tasks, function (task, key, callback) {\n (0, _wrapAsync2.default)(task)(function (err, result) {\n if (arguments.length > 2) {\n result = (0, _slice2.default)(arguments, 1);\n }\n results[key] = result;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasNextTick = exports.hasSetImmediate = undefined;\nexports.fallback = fallback;\nexports.wrap = wrap;\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n return function (fn /*, ...args*/) {\n var args = (0, _slice2.default)(arguments, 1);\n defer(function () {\n fn.apply(null, args);\n });\n };\n}\n\nvar _defer;\n\nif (hasSetImmediate) {\n _defer = setImmediate;\n} else if (hasNextTick) {\n _defer = process.nextTick;\n} else {\n _defer = fallback;\n}\n\nexports.default = wrap(_defer);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = slice;\nfunction slice(arrayLike, start) {\n start = start | 0;\n var newLen = Math.max(arrayLike.length - start, 0);\n var newArr = Array(newLen);\n for (var idx = 0; idx < newLen; idx++) {\n newArr[idx] = arrayLike[start + idx];\n }\n return newArr;\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _withoutIndex;\nfunction _withoutIndex(iteratee) {\n return function (value, index, callback) {\n return iteratee(value, callback);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar supportsSymbol = typeof Symbol === 'function';\n\nfunction isAsync(fn) {\n return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction wrapAsync(asyncFn) {\n return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _doParallel = require('./internal/doParallel');\n\nvar _doParallel2 = _interopRequireDefault(_doParallel);\n\nvar _map = require('./internal/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Produces a new collection of values by mapping each value in `coll` through\n * the `iteratee` function. The `iteratee` is called with an item from `coll`\n * and a callback for when it has finished processing. Each of these callback\n * takes 2 arguments: an `error`, and the transformed item from `coll`. If\n * `iteratee` passes an error to its callback, the main `callback` (for the\n * `map` function) is immediately called with the error.\n *\n * Note, that since this function applies the `iteratee` to each item in\n * parallel, there is no guarantee that the `iteratee` functions will complete\n * in order. However, the results array will be in the same order as the\n * original `coll`.\n *\n * If `map` is passed an Object, the results will be an Array. The results\n * will roughly be in the order of the original Objects' keys (but this can\n * vary across JavaScript engines).\n *\n * @name map\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an Array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @example\n *\n * async.map(['file1','file2','file3'], fs.stat, function(err, results) {\n * // results is now an array of stats for each file\n * });\n */\nexports.default = (0, _doParallel2.default)(_map2.default);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = parallelLimit;\n\nvar _eachOf = require('./eachOf');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _parallel = require('./internal/parallel');\n\nvar _parallel2 = _interopRequireDefault(_parallel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Run the `tasks` collection of functions in parallel, without waiting until\n * the previous function has completed. If any of the functions pass an error to\n * its callback, the main `callback` is immediately called with the value of the\n * error. Once the `tasks` have completed, the results are passed to the final\n * `callback` as an array.\n *\n * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n * parallel execution of code. If your tasks do not use any timers or perform\n * any I/O, they will actually be executed in series. Any synchronous setup\n * sections for each task will happen one after the other. JavaScript remains\n * single-threaded.\n *\n * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n * execution of other tasks when a task fails.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.parallel}.\n *\n * @name parallel\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n *\n * @example\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // the results array will equal ['one','two'] even though\n * // the second function had a shorter timeout.\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equals to: {one: 1, two: 2}\n * });\n */\nfunction parallelLimit(tasks, callback) {\n (0, _parallel2.default)(_eachOf2.default, tasks, callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (tasks, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n if (!(0, _isArray2.default)(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));\n if (!tasks.length) return callback();\n var taskIndex = 0;\n\n function nextTask(args) {\n var task = (0, _wrapAsync2.default)(tasks[taskIndex++]);\n args.push((0, _onlyOnce2.default)(next));\n task.apply(null, args);\n }\n\n function next(err /*, ...args*/) {\n if (err || taskIndex === tasks.length) {\n return callback.apply(null, arguments);\n }\n nextTask((0, _slice2.default)(arguments, 1));\n }\n\n nextTask([]);\n};\n\nvar _isArray = require('lodash/isArray');\n\nvar _isArray2 = _interopRequireDefault(_isArray);\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./internal/once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _slice = require('./internal/slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nvar _onlyOnce = require('./internal/onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n/**\n * Runs the `tasks` array of functions in series, each passing their results to\n * the next in the array. However, if any of the `tasks` pass an error to their\n * own callback, the next function is not executed, and the main `callback` is\n * immediately called with the error.\n *\n * @name waterfall\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}\n * to run.\n * Each function should complete with any number of `result` values.\n * The `result` values will be passed as arguments, in order, to the next task.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This will be passed the results of the last task's\n * callback. Invoked with (err, [results]).\n * @returns undefined\n * @example\n *\n * async.waterfall([\n * function(callback) {\n * callback(null, 'one', 'two');\n * },\n * function(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * },\n * function(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n *\n * // Or, with named functions:\n * async.waterfall([\n * myFirstFunction,\n * mySecondFunction,\n * myLastFunction,\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n * function myFirstFunction(callback) {\n * callback(null, 'one', 'two');\n * }\n * function mySecondFunction(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * }\n * function myLastFunction(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n */","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\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\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst 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\nconst 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 const arr = new Uint8Array(1)\n const 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 const 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 const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const 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(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\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 const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const 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 const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let 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 const 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 let 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 const len = checked(obj.length) | 0\n const 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 let x = a.length\n let y = b.length\n\n for (let 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 let 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 const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n 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 const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let 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 let 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 const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let 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 const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let 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 const 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 let str = ''\n const 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 let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let 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 let indexSize = 1\n let arrLength = arr.length\n let 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 let i\n if (dir) {\n let 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 let found = true\n for (let 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 const 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 const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const 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 const 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 let 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 const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let 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\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const 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 let res = ''\n let 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 let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let 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 const 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 const 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 let val = this[offset]\n let mul = 1\n let 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 let val = this[offset + --byteLength]\n let 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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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 let val = this[offset]\n let mul = 1\n let 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 let i = byteLength\n let mul = 1\n let 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 const 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 const 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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\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 const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let 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 const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let 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\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let 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 const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let 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\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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 const 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 const 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 let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const 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// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst 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 let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let 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 const byteArray = []\n for (let 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 let c, hi, lo\n const byteArray = []\n for (let 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 let i\n for (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\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\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\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","'use strict'\n\nfunction decode (input, alphabet) {\n input = input.replace(new RegExp('=', 'g'), '')\n const length = input.length\n\n let bits = 0\n let value = 0\n\n let index = 0\n const output = new Uint8Array((length * 5 / 8) | 0)\n\n for (let i = 0; i < length; i++) {\n value = (value << 5) | alphabet.indexOf(input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n\nfunction encode (buffer, alphabet) {\n const length = buffer.byteLength\n const view = new Uint8Array(buffer)\n const padding = alphabet.indexOf('=') === alphabet.length - 1\n\n if (padding) {\n alphabet = alphabet.substring(0, alphabet.length - 1)\n }\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < length; i++) {\n value = (value << 8) | view[i]\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n\nmodule.exports = function base32 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return encode(Uint8Array.from(input), alphabet)\n }\n\n return encode(input, alphabet)\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base32 character')\n }\n }\n\n return decode(input, alphabet)\n }\n }\n}\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base64 (alphabet) {\n // The alphabet is only used to know:\n // 1. If padding is enabled (must contain '=')\n // 2. If the output must be url-safe (must contain '-' and '_')\n // 3. If the input of the output function is valid\n // The alphabets from RFC 4648 are always used.\n const padding = alphabet.indexOf('=') > -1\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\n\n return {\n encode (input) {\n let output = ''\n\n if (typeof input === 'string') {\n output = Buffer.from(input).toString('base64')\n } else {\n output = input.toString('base64')\n }\n\n if (url) {\n output = output.replace(/\\+/g, '-').replace(/\\//g, '_')\n }\n\n const pad = output.indexOf('=')\n if (pad > 0 && !padding) {\n output = output.substring(0, pad)\n }\n\n return output\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base64 character')\n }\n }\n\n return Buffer.from(input, 'base64')\n }\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n * @module Multibase\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst constants = require('./constants')\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.names = Object.freeze(Object.keys(constants.names))\nexports.codes = Object.freeze(Object.keys(constants.codes))\n\nconst errNotSupported = new Error('Unsupported encoding')\n\n/**\n * Create a new buffer with the multibase varint+code.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be prefixed with multibase.\n * @memberof Multibase\n * @returns {Buffer}\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded buffer')\n }\n const base = getBase(nameOrCode)\n const codeBuf = Buffer.from(base.code)\n\n const name = base.name\n validEncode(name, buf)\n return Buffer.concat([codeBuf, buf])\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be encoded.\n * @returns {Buffer}\n * @memberof Multibase\n */\nfunction encode (nameOrCode, buf) {\n const base = getBase(nameOrCode)\n const name = base.name\n\n return multibase(name, Buffer.from(base.encode(buf)))\n}\n\n/**\n * Takes a buffer or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Buffer|string} bufOrString\n * @returns {Buffer}\n * @memberof Multibase\n *\n */\nfunction decode (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n const code = bufOrString.substring(0, 1)\n bufOrString = bufOrString.substring(1, bufOrString.length)\n\n if (typeof bufOrString === 'string') {\n bufOrString = Buffer.from(bufOrString)\n }\n\n const base = getBase(code)\n return Buffer.from(base.decode(bufOrString.toString()))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Buffer|string} bufOrString\n * @returns {boolean}\n * @memberof Multibase\n */\nfunction isEncoded (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\n return false\n }\n\n const code = bufOrString.substring(0, 1)\n try {\n const base = getBase(code)\n return base.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * @param {string} name\n * @param {Buffer} buf\n * @private\n * @returns {undefined}\n */\nfunction validEncode (name, buf) {\n const base = getBase(name)\n base.decode(buf.toString())\n}\n\nfunction getBase (nameOrCode) {\n let base\n\n if (constants.names[nameOrCode]) {\n base = constants.names[nameOrCode]\n } else if (constants.codes[nameOrCode]) {\n base = constants.codes[nameOrCode]\n } else {\n throw errNotSupported\n }\n\n if (!base.isImplemented()) {\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\n }\n\n return base\n}\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","'use strict'\nconst varint = require('varint')\nconst { Buffer } = require('buffer')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","'use strict'\n\nconst baseTable = require('./base-table.json')\nconst varintEncode = require('./util').varintEncode\n\n// map for codecName -> codeVarintBuffer\nconst varintTable = {}\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n varintTable[encodingName] = varintEncode(code)\n}\n\nmodule.exports = Object.freeze(varintTable)\n","'use strict'\n\nconst mh = require('multihashes')\nconst { Buffer } = require('buffer')\nvar CIDUtil = {\n /**\n * Test if the given input is a valid CID object.\n * Returns an error message if it is not.\n * Returns undefined if it is a valid CID.\n *\n * @param {any} other\n * @returns {string}\n */\n checkCIDComponents: function (other) {\n if (other == null) {\n return 'null values are not valid CIDs'\n }\n\n if (!(other.version === 0 || other.version === 1)) {\n return 'Invalid version, must be a number equal to 1 or 0'\n }\n\n if (typeof other.codec !== 'string') {\n return 'codec must be string'\n }\n\n if (other.version === 0) {\n if (other.codec !== 'dag-pb') {\n return \"codec must be 'dag-pb' for CIDv0\"\n }\n if (other.multibaseName !== 'base58btc') {\n return \"multibaseName must be 'base58btc' for CIDv0\"\n }\n }\n\n if (!Buffer.isBuffer(other.multihash)) {\n return 'multihash must be a Buffer'\n }\n\n try {\n mh.validate(other.multihash)\n } catch (err) {\n let errorMsg = err.message\n if (!errorMsg) { // Just in case mh.validate() throws an error with empty error message\n errorMsg = 'Multihash validation failed'\n }\n return errorMsg\n }\n }\n}\n\nmodule.exports = CIDUtil\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst mh = require('multihashes')\nconst multibase = require('multibase')\nconst multicodec = require('multicodec')\nconst codecs = require('multicodec/src/base-table.json')\nconst CIDUtil = require('./cid-util')\nconst withIs = require('class-is')\n\n/**\n * @typedef {Object} SerializedCID\n * @param {string} codec\n * @param {number} version\n * @param {Buffer} multihash\n */\n\n/**\n * Test if the given input is a CID.\n * @function isCID\n * @memberof CID\n * @static\n * @param {any} other\n * @returns {bool}\n */\n\n/**\n * Class representing a CID ``\n * , as defined in [ipld/cid](https://github.com/multiformats/cid).\n * @class CID\n */\nclass CID {\n /**\n * Create a new CID.\n *\n * The algorithm for argument input is roughly:\n * ```\n * if (cid)\n * -> create a copy\n * else if (str)\n * if (1st char is on multibase table) -> CID String\n * else -> bs58 encoded multihash\n * else if (Buffer)\n * if (1st byte is 0 or 1) -> CID\n * else -> multihash\n * else if (Number)\n * -> construct CID by parts\n * ```\n *\n * @param {string|Buffer|CID} version\n * @param {string} [codec]\n * @param {Buffer} [multihash]\n * @param {string} [multibaseName]\n *\n * @example\n * new CID(, , , )\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n */\n constructor (version, codec, multihash, multibaseName) {\n if (_CID.isCID(version)) {\n // version is an exising CID instance\n const cid = version\n this.version = cid.version\n this.codec = cid.codec\n this.multihash = Buffer.from(cid.multihash)\n // Default guard for when a CID < 0.7 is passed with no multibaseName\n this.multibaseName = cid.multibaseName || (cid.version === 0 ? 'base58btc' : 'base32')\n return\n }\n\n if (typeof version === 'string') {\n // e.g. 'base32' or false\n const baseName = multibase.isEncoded(version)\n if (baseName) {\n // version is a CID String encoded with multibase, so v1\n const cid = multibase.decode(version)\n this.version = parseInt(cid.slice(0, 1).toString('hex'), 16)\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = baseName\n } else {\n // version is a base58btc string multihash, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = mh.fromB58String(version)\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n Object.defineProperty(this, 'string', { value: version })\n return\n }\n\n if (Buffer.isBuffer(version)) {\n const firstByte = version.slice(0, 1)\n const v = parseInt(firstByte.toString('hex'), 16)\n if (v === 1) {\n // version is a CID buffer\n const cid = version\n this.version = v\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = 'base32'\n } else {\n // version is a raw multihash buffer, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = version\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n return\n }\n\n // otherwise, assemble the CID from the parameters\n\n /**\n * @type {number}\n */\n this.version = version\n\n /**\n * @type {string}\n */\n this.codec = codec\n\n /**\n * @type {Buffer}\n */\n this.multihash = multihash\n\n /**\n * @type {string}\n */\n this.multibaseName = multibaseName || (version === 0 ? 'base58btc' : 'base32')\n\n CID.validateCID(this)\n }\n\n /**\n * The CID as a `Buffer`\n *\n * @return {Buffer}\n * @readonly\n *\n * @memberOf CID\n */\n get buffer () {\n let buffer = this._buffer\n\n if (!buffer) {\n if (this.version === 0) {\n buffer = this.multihash\n } else if (this.version === 1) {\n buffer = Buffer.concat([\n Buffer.from('01', 'hex'),\n multicodec.getCodeVarint(this.codec),\n this.multihash\n ])\n } else {\n throw new Error('unsupported version')\n }\n\n // Cache this buffer so it doesn't have to be recreated\n Object.defineProperty(this, '_buffer', { value: buffer })\n }\n\n return buffer\n }\n\n /**\n * Get the prefix of the CID.\n *\n * @returns {Buffer}\n * @readonly\n */\n get prefix () {\n return Buffer.concat([\n Buffer.from(`0${this.version}`, 'hex'),\n multicodec.getCodeVarint(this.codec),\n mh.prefix(this.multihash)\n ])\n }\n\n /**\n * Convert to a CID of version `0`.\n *\n * @returns {CID}\n */\n toV0 () {\n if (this.codec !== 'dag-pb') {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n const { name, length } = mh.decode(this.multihash)\n\n if (name !== 'sha2-256') {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n if (length !== 32) {\n throw new Error('Cannot convert non 32 byte multihash CID to CIDv0')\n }\n\n return new _CID(0, this.codec, this.multihash)\n }\n\n /**\n * Convert to a CID of version `1`.\n *\n * @returns {CID}\n */\n toV1 () {\n return new _CID(1, this.codec, this.multihash)\n }\n\n /**\n * Encode the CID into a string.\n *\n * @param {string} [base=this.multibaseName] - Base encoding to use.\n * @returns {string}\n */\n toBaseEncodedString (base = this.multibaseName) {\n if (this.string && base === this.multibaseName) {\n return this.string\n }\n let str = null\n if (this.version === 0) {\n if (base !== 'base58btc') {\n throw new Error('not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()')\n }\n str = mh.toB58String(this.multihash)\n } else if (this.version === 1) {\n str = multibase.encode(base, this.buffer).toString()\n } else {\n throw new Error('unsupported version')\n }\n if (base === this.multibaseName) {\n // cache the string value\n Object.defineProperty(this, 'string', { value: str })\n }\n return str\n }\n\n /**\n * CID(QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n)\n *\n * @returns {String}\n */\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return 'CID(' + this.toString() + ')'\n }\n\n toString (base) {\n return this.toBaseEncodedString(base)\n }\n\n /**\n * Serialize to a plain object.\n *\n * @returns {SerializedCID}\n */\n toJSON () {\n return {\n codec: this.codec,\n version: this.version,\n hash: this.multihash\n }\n }\n\n /**\n * Compare equality with another CID.\n *\n * @param {CID} other\n * @returns {bool}\n */\n equals (other) {\n return this.codec === other.codec &&\n this.version === other.version &&\n this.multihash.equals(other.multihash)\n }\n\n /**\n * Test if the given input is a valid CID object.\n * Throws if it is not.\n *\n * @param {any} other\n * @returns {void}\n */\n static validateCID (other) {\n const errorMsg = CIDUtil.checkCIDComponents(other)\n if (errorMsg) {\n throw new Error(errorMsg)\n }\n }\n}\n\nconst _CID = withIs(CID, {\n className: 'CID',\n symbolName: '@ipld/js-cid/CID'\n})\n\n_CID.codecs = codecs\n\nmodule.exports = _CID\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict';\n\nfunction withIs(Class, { className, symbolName }) {\n const symbol = Symbol.for(symbolName);\n\n const ClassIsWrapper = {\n // The code below assigns the class wrapper to an object to trick\n // JavaScript engines to show the name of the extended class when\n // logging an instances.\n // We are assigning an anonymous class (class wrapper) to the object\n // with key `className` to keep the correct name.\n // If this is not supported it falls back to logging `ClassIsWrapper`.\n [className]: class extends Class {\n constructor(...args) {\n super(...args);\n Object.defineProperty(this, symbol, { value: true });\n }\n\n get [Symbol.toStringTag]() {\n return className;\n }\n },\n }[className];\n\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\n\n return ClassIsWrapper;\n}\n\nfunction withIsProto(Class, { className, symbolName, withoutNew }) {\n const symbol = Symbol.for(symbolName);\n\n /* eslint-disable object-shorthand */\n const ClassIsWrapper = {\n [className]: function (...args) {\n if (withoutNew && !(this instanceof ClassIsWrapper)) {\n return new ClassIsWrapper(...args);\n }\n\n const _this = Class.call(this, ...args) || this;\n\n if (_this && !_this[symbol]) {\n Object.defineProperty(_this, symbol, { value: true });\n }\n\n return _this;\n },\n }[className];\n /* eslint-enable object-shorthand */\n\n ClassIsWrapper.prototype = Object.create(Class.prototype);\n ClassIsWrapper.prototype.constructor = ClassIsWrapper;\n\n Object.defineProperty(ClassIsWrapper.prototype, Symbol.toStringTag, {\n get() {\n return className;\n },\n });\n\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\n\n return ClassIsWrapper;\n}\n\nmodule.exports = withIs;\nmodule.exports.proto = withIsProto;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst CID = require('cids');\r\n\r\n/**\r\n * Take any ipfsHash and convert it to a CID v1 encoded in base32.\r\n * @param {string} ipfsHash a regular ipfs hash either a cid v0 or v1 (v1 will remain unchanged)\r\n * @return {string} the resulting ipfs hash as a cid v1\r\n */\r\nconst cidV0ToV1Base32 = (ipfsHash) => {\r\n\tlet cid = new CID(ipfsHash);\r\n\tif (cid.version === 0) {\r\n\t\tcid = cid.toV1();\r\n\t}\r\n\treturn cid.toString('base32');\r\n}\r\n\r\nexports.cidV0ToV1Base32 = cidV0ToV1Base32;\r\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst multiC = require('multicodec');\r\n\r\nconst { hexStringToBuffer, profiles } = require('./profiles');\r\nconst { cidV0ToV1Base32 } = require('./helpers');\r\n\r\nmodule.exports = {\r\n\r\n\t//export some helpers functions\r\n\thelpers: {\r\n\t\tcidV0ToV1Base32,\r\n\t},\r\n\r\n\t/**\r\n\t* Decode a Content Hash.\r\n\t* @param {string} hash an hex string containing a content hash\r\n\t* @return {string} the decoded content\r\n\t*/\r\n\tdecode: function (contentHash) {\r\n\t\tconst buffer = hexStringToBuffer(contentHash);\r\n\t\tconst codec = multiC.getCodec(buffer);\r\n\t\tconst value = multiC.rmPrefix(buffer);\r\n\t\tlet profile = profiles[codec];\r\n\t\tif (!profile) profile = profiles['default'];\r\n\t\treturn profile.decode(value);\r\n\t},\r\n\r\n\t/**\r\n\t* Encode an IPFS address into a content hash\r\n\t* @param {string} ipfsHash string containing an IPFS address\r\n\t* @return {string} the resulting content hash\r\n\t*/\r\n\tfromIpfs: function (ipfsHash) {\r\n\t\treturn this.encode('ipfs-ns', ipfsHash);\r\n\t},\r\n\r\n\t/**\r\n\t* Encode a Swarm address into a content hash\r\n\t* @param {string} swarmHash string containing a Swarm address\r\n\t* @return {string} the resulting content hash\r\n\t*/\r\n\tfromSwarm: function (swarmHash) {\r\n\t\treturn this.encode('swarm-ns', swarmHash);\r\n\t},\r\n\r\n\t/**\r\n\t* General purpose encoding function\r\n * @param {string} codec \r\n * @param {string} value \r\n */\r\n\tencode: function (codec, value) {\r\n\t\tlet profile = profiles[codec];\r\n\t\tif (!profile) profile = profiles['default'];\r\n\t\tconst encodedValue = profile.encode(value);\r\n\t\treturn multiC.addPrefix(codec, encodedValue).toString('hex');\r\n\t},\r\n\r\n\t/**\r\n\t* Extract the codec of a content hash\r\n\t* @param {string} hash hex string containing a content hash\r\n\t* @return {string} the extracted codec\r\n\t*/\r\n\tgetCodec: function (hash) {\r\n\t\tlet buffer = hexStringToBuffer(hash);\r\n\t\treturn multiC.getCodec(buffer);\r\n\t},\r\n}\r\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst CID = require('cids');\r\nconst multiH = require('multihashes');\r\n\r\n/**\r\n * Convert an hexadecimal string to a Buffer, the string can start with or without '0x'\r\n * @param {string} hex an hexadecimal value\r\n * @return {Buffer} the resulting Buffer\r\n */\r\nconst hexStringToBuffer = (hex) => {\r\n\tlet prefix = hex.slice(0, 2);\r\n\tlet value = hex.slice(2);\r\n\tlet res = '';\r\n\tif (prefix === '0x') res = value;\r\n\telse res = hex;\r\n\treturn multiH.fromHexString(res);\r\n}\r\n\r\n/**\r\n* list of known encoding,\r\n* encoding should be a function that takes a `string` input,\r\n* and return a `Buffer` result\r\n*/\r\nconst encodes = {\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n swarm: (value) => {\r\n const multihash = multiH.encode(hexStringToBuffer(value), 'keccak-256');\r\n\t\treturn new CID(1, 'swarm-manifest', multihash).buffer;\r\n },\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n ipfs: (value) => {\r\n const multihash = multiH.fromB58String(value);\r\n return new CID(1, 'dag-pb', multihash).buffer;\r\n },\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n utf8: (value) => {\r\n return Buffer.from(value, 'utf8');\r\n },\r\n};\r\n\r\n/** \r\n* list of known decoding,\r\n* decoding should be a function that takes a `Buffer` input,\r\n* and return a `string` result\r\n*/\r\nconst decodes = {\r\n /**\r\n * @param {Buffer} value \r\n */\r\n hexMultiHash: (value) => {\r\n const cid = new CID(value);\r\n return multiH.decode(cid.multihash).digest.toString('hex');\r\n },\r\n /**\r\n * @param {Buffer} value \r\n */\r\n b58MultiHash: (value) => {\r\n const cid = new CID(value);\r\n return multiH.toB58String(cid.multihash);\r\n },\r\n /**\r\n * @param {Buffer} value \r\n */\r\n utf8: (value) => {\r\n return value.toString('utf8');\r\n },\r\n};\r\n\r\n/**\r\n* list of known encoding/decoding for a given codec,\r\n* `encode` should be chosen among the `encodes` functions\r\n* `decode` should be chosen among the `decodes` functions\r\n*/\r\nconst profiles = {\r\n 'swarm-ns': {\r\n encode: encodes.swarm,\r\n decode: decodes.hexMultiHash,\r\n },\r\n 'ipfs-ns': {\r\n encode: encodes.ipfs,\r\n decode: decodes.b58MultiHash,\r\n },\r\n 'ipns-ns': {\r\n encode: encodes.ipfs,\r\n decode: decodes.b58MultiHash,\r\n },\r\n 'default': {\r\n encode: encodes.utf8,\r\n decode: decodes.utf8,\r\n },\r\n};\r\n\r\nexports.hexStringToBuffer = hexStringToBuffer;\r\nexports.profiles = profiles;","/* jshint node: true */\n(function () {\n \"use strict\";\n\n function CookieAccessInfo(domain, path, secure, script) {\n if (this instanceof CookieAccessInfo) {\n this.domain = domain || undefined;\n this.path = path || \"/\";\n this.secure = !!secure;\n this.script = !!script;\n return this;\n }\n return new CookieAccessInfo(domain, path, secure, script);\n }\n CookieAccessInfo.All = Object.freeze(Object.create(null));\n exports.CookieAccessInfo = CookieAccessInfo;\n\n function Cookie(cookiestr, request_domain, request_path) {\n if (cookiestr instanceof Cookie) {\n return cookiestr;\n }\n if (this instanceof Cookie) {\n this.name = null;\n this.value = null;\n this.expiration_date = Infinity;\n this.path = String(request_path || \"/\");\n this.explicit_path = false;\n this.domain = request_domain || null;\n this.explicit_domain = false;\n this.secure = false; //how to define default?\n this.noscript = false; //httponly\n if (cookiestr) {\n this.parse(cookiestr, request_domain, request_path);\n }\n return this;\n }\n return new Cookie(cookiestr, request_domain, request_path);\n }\n exports.Cookie = Cookie;\n\n Cookie.prototype.toString = function toString() {\n var str = [this.name + \"=\" + this.value];\n if (this.expiration_date !== Infinity) {\n str.push(\"expires=\" + (new Date(this.expiration_date)).toGMTString());\n }\n if (this.domain) {\n str.push(\"domain=\" + this.domain);\n }\n if (this.path) {\n str.push(\"path=\" + this.path);\n }\n if (this.secure) {\n str.push(\"secure\");\n }\n if (this.noscript) {\n str.push(\"httponly\");\n }\n return str.join(\"; \");\n };\n\n Cookie.prototype.toValueString = function toValueString() {\n return this.name + \"=\" + this.value;\n };\n\n var cookie_str_splitter = /[:](?=\\s*[a-zA-Z0-9_\\-]+\\s*[=])/g;\n Cookie.prototype.parse = function parse(str, request_domain, request_path) {\n if (this instanceof Cookie) {\n if ( str.length > 32768 ) {\n console.warn(\"Cookie too long for parsing (>32768 characters)\");\n return;\n }\n \n var parts = str.split(\";\").filter(function (value) {\n return !!value;\n });\n var i;\n\n var pair = parts[0].match(/([^=]+)=([\\s\\S]*)/);\n if (!pair) {\n console.warn(\"Invalid cookie header encountered. Header: '\"+str+\"'\");\n return;\n }\n\n var key = pair[1];\n var value = pair[2];\n if ( typeof key !== 'string' || key.length === 0 || typeof value !== 'string' ) {\n console.warn(\"Unable to extract values from cookie header. Cookie: '\"+str+\"'\");\n return;\n }\n\n this.name = key;\n this.value = value;\n\n for (i = 1; i < parts.length; i += 1) {\n pair = parts[i].match(/([^=]+)(?:=([\\s\\S]*))?/);\n key = pair[1].trim().toLowerCase();\n value = pair[2];\n switch (key) {\n case \"httponly\":\n this.noscript = true;\n break;\n case \"expires\":\n this.expiration_date = value ?\n Number(Date.parse(value)) :\n Infinity;\n break;\n case \"path\":\n this.path = value ?\n value.trim() :\n \"\";\n this.explicit_path = true;\n break;\n case \"domain\":\n this.domain = value ?\n value.trim() :\n \"\";\n this.explicit_domain = !!this.domain;\n break;\n case \"secure\":\n this.secure = true;\n break;\n }\n }\n\n if (!this.explicit_path) {\n this.path = request_path || \"/\";\n }\n if (!this.explicit_domain) {\n this.domain = request_domain;\n }\n\n return this;\n }\n return new Cookie().parse(str, request_domain, request_path);\n };\n\n Cookie.prototype.matches = function matches(access_info) {\n if (access_info === CookieAccessInfo.All) {\n return true;\n }\n if (this.noscript && access_info.script ||\n this.secure && !access_info.secure ||\n !this.collidesWith(access_info)) {\n return false;\n }\n return true;\n };\n\n Cookie.prototype.collidesWith = function collidesWith(access_info) {\n if ((this.path && !access_info.path) || (this.domain && !access_info.domain)) {\n return false;\n }\n if (this.path && access_info.path.indexOf(this.path) !== 0) {\n return false;\n }\n if (this.explicit_path && access_info.path.indexOf( this.path ) !== 0) {\n return false;\n }\n var access_domain = access_info.domain && access_info.domain.replace(/^[\\.]/,'');\n var cookie_domain = this.domain && this.domain.replace(/^[\\.]/,'');\n if (cookie_domain === access_domain) {\n return true;\n }\n if (cookie_domain) {\n if (!this.explicit_domain) {\n return false; // we already checked if the domains were exactly the same\n }\n var wildcard = access_domain.indexOf(cookie_domain);\n if (wildcard === -1 || wildcard !== access_domain.length - cookie_domain.length) {\n return false;\n }\n return true;\n }\n return true;\n };\n\n function CookieJar() {\n var cookies, cookies_list, collidable_cookie;\n if (this instanceof CookieJar) {\n cookies = Object.create(null); //name: [Cookie]\n\n this.setCookie = function setCookie(cookie, request_domain, request_path) {\n var remove, i;\n cookie = new Cookie(cookie, request_domain, request_path);\n //Delete the cookie if the set is past the current time\n remove = cookie.expiration_date <= Date.now();\n if (cookies[cookie.name] !== undefined) {\n cookies_list = cookies[cookie.name];\n for (i = 0; i < cookies_list.length; i += 1) {\n collidable_cookie = cookies_list[i];\n if (collidable_cookie.collidesWith(cookie)) {\n if (remove) {\n cookies_list.splice(i, 1);\n if (cookies_list.length === 0) {\n delete cookies[cookie.name];\n }\n return false;\n }\n cookies_list[i] = cookie;\n return cookie;\n }\n }\n if (remove) {\n return false;\n }\n cookies_list.push(cookie);\n return cookie;\n }\n if (remove) {\n return false;\n }\n cookies[cookie.name] = [cookie];\n return cookies[cookie.name];\n };\n //returns a cookie\n this.getCookie = function getCookie(cookie_name, access_info) {\n var cookie, i;\n cookies_list = cookies[cookie_name];\n if (!cookies_list) {\n return;\n }\n for (i = 0; i < cookies_list.length; i += 1) {\n cookie = cookies_list[i];\n if (cookie.expiration_date <= Date.now()) {\n if (cookies_list.length === 0) {\n delete cookies[cookie.name];\n }\n continue;\n }\n\n if (cookie.matches(access_info)) {\n return cookie;\n }\n }\n };\n //returns a list of cookies\n this.getCookies = function getCookies(access_info) {\n var matches = [], cookie_name, cookie;\n for (cookie_name in cookies) {\n cookie = this.getCookie(cookie_name, access_info);\n if (cookie) {\n matches.push(cookie);\n }\n }\n matches.toString = function toString() {\n return matches.join(\":\");\n };\n matches.toValueString = function toValueString() {\n return matches.map(function (c) {\n return c.toValueString();\n }).join('; ');\n };\n return matches;\n };\n\n return this;\n }\n return new CookieJar();\n }\n exports.CookieJar = CookieJar;\n\n //returns list of cookies that were set correctly. Cookies that are expired and removed are not returned.\n CookieJar.prototype.setCookies = function setCookies(cookies, request_domain, request_path) {\n cookies = Array.isArray(cookies) ?\n cookies :\n cookies.split(cookie_str_splitter);\n var successful = [],\n i,\n cookie;\n cookies = cookies.map(function(item){\n return new Cookie(item, request_domain, request_path);\n });\n for (i = 0; i < cookies.length; i += 1) {\n cookie = cookies[i];\n if (this.setCookie(cookie, request_domain, request_path)) {\n successful.push(cookie);\n }\n }\n return successful;\n };\n}());\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32;\n(function (factory) {\n\t/*jshint ignore:start */\n\t/*eslint-disable */\n\tif(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n\t\tif('object' === typeof exports) {\n\t\t\tfactory(exports);\n\t\t} else if ('function' === typeof define && define.amd) {\n\t\t\tdefine(function () {\n\t\t\t\tvar module = {};\n\t\t\t\tfactory(module);\n\t\t\t\treturn module;\n\t\t\t});\n\t\t} else {\n\t\t\tfactory(CRC32 = {});\n\t\t}\n\t} else {\n\t\tfactory(CRC32 = {});\n\t}\n\t/*eslint-enable */\n\t/*jshint ignore:end */\n}(function(CRC32) {\nCRC32.version = '1.2.2';\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B, seed) {\n\tvar C = seed ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\n// $FlowIgnore\nCRC32.bstr = crc32_bstr;\n// $FlowIgnore\nCRC32.buf = crc32_buf;\n// $FlowIgnore\nCRC32.str = crc32_str;\n}));\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\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\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'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\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","'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 EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.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 x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\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\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\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 if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\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\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\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 BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', 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.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.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\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\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 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 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","'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 hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\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","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","const EthQuery = require('eth-query')\nconst pify = require('pify')\nconst SafeEventEmitter = require('safe-event-emitter')\n\nconst sec = 1000\n\nconst calculateSum = (accumulator, currentValue) => accumulator + currentValue\nconst blockTrackerEvents = ['sync', 'latest']\n\nclass BaseBlockTracker extends SafeEventEmitter {\n\n //\n // public\n //\n\n constructor (opts = {}) {\n super()\n // config\n this._blockResetDuration = opts.blockResetDuration || 20 * sec\n // state\n this._blockResetTimeout\n this._currentBlock = null\n this._isRunning = false\n // bind functions for internal use\n this._onNewListener = this._onNewListener.bind(this)\n this._onRemoveListener = this._onRemoveListener.bind(this)\n this._resetCurrentBlock = this._resetCurrentBlock.bind(this)\n // listen for handler changes\n this._setupInternalEvents()\n }\n\n isRunning () {\n return this._isRunning\n }\n\n getCurrentBlock () {\n return this._currentBlock\n }\n\n async getLatestBlock () {\n // return if available\n if (this._currentBlock) return this._currentBlock\n // wait for a new latest block\n const latestBlock = await new Promise(resolve => this.once('latest', resolve))\n // return newly set current block\n return latestBlock\n }\n\n // dont allow module consumer to remove our internal event listeners\n removeAllListeners (eventName) {\n // perform default behavior, preserve fn arity\n if (eventName) {\n super.removeAllListeners(eventName)\n } else {\n super.removeAllListeners()\n }\n // re-add internal events\n this._setupInternalEvents()\n // trigger stop check just in case\n this._onRemoveListener()\n }\n\n //\n // to be implemented in subclass\n //\n\n _start () {\n // default behavior is noop\n }\n\n _end () {\n // default behavior is noop\n }\n\n //\n // private\n //\n\n _setupInternalEvents () {\n // first remove listeners for idempotence\n this.removeListener('newListener', this._onNewListener)\n this.removeListener('removeListener', this._onRemoveListener)\n // then add them\n this.on('newListener', this._onNewListener)\n this.on('removeListener', this._onRemoveListener)\n }\n\n _onNewListener (eventName, handler) {\n // `newListener` is called *before* the listener is added\n if (!blockTrackerEvents.includes(eventName)) return\n this._maybeStart()\n }\n\n _onRemoveListener (eventName, handler) {\n // `removeListener` is called *after* the listener is removed\n if (this._getBlockTrackerEventCount() > 0) return\n this._maybeEnd()\n }\n\n _maybeStart () {\n if (this._isRunning) return\n this._isRunning = true\n // cancel setting latest block to stale\n this._cancelBlockResetTimeout()\n this._start()\n }\n\n _maybeEnd () {\n if (!this._isRunning) return\n this._isRunning = false\n this._setupBlockResetTimeout()\n this._end()\n }\n\n _getBlockTrackerEventCount () {\n return blockTrackerEvents\n .map(eventName => this.listenerCount(eventName))\n .reduce(calculateSum)\n }\n\n _newPotentialLatest (newBlock) {\n const currentBlock = this._currentBlock\n // only update if blok number is higher\n if (currentBlock && (hexToInt(newBlock) <= hexToInt(currentBlock))) return\n this._setCurrentBlock(newBlock)\n }\n\n _setCurrentBlock (newBlock) {\n const oldBlock = this._currentBlock\n this._currentBlock = newBlock\n this.emit('latest', newBlock)\n this.emit('sync', { oldBlock, newBlock })\n }\n\n _setupBlockResetTimeout () {\n // clear any existing timeout\n this._cancelBlockResetTimeout()\n // clear latest block when stale\n this._blockResetTimeout = setTimeout(this._resetCurrentBlock, this._blockResetDuration)\n // nodejs - dont hold process open\n if (this._blockResetTimeout.unref) {\n this._blockResetTimeout.unref()\n }\n }\n\n _cancelBlockResetTimeout () {\n clearTimeout(this._blockResetTimeout)\n }\n\n _resetCurrentBlock () {\n this._currentBlock = null\n }\n\n}\n\nmodule.exports = BaseBlockTracker\n\nfunction hexToInt(hexInt) {\n return Number.parseInt(hexInt, 16)\n}\n","const pify = require('pify')\nconst BaseBlockTracker = require('./base')\n\nconst sec = 1000\n\nclass PollingBlockTracker extends BaseBlockTracker {\n\n constructor (opts = {}) {\n // parse + validate args\n if (!opts.provider) throw new Error('PollingBlockTracker - no provider specified.')\n const pollingInterval = opts.pollingInterval || 20 * sec\n const retryTimeout = opts.retryTimeout || pollingInterval / 10\n const keepEventLoopActive = opts.keepEventLoopActive !== undefined ? opts.keepEventLoopActive : true\n const setSkipCacheFlag = opts.setSkipCacheFlag || false\n // BaseBlockTracker constructor\n super(Object.assign({\n blockResetDuration: pollingInterval,\n }, opts))\n // config\n this._provider = opts.provider\n this._pollingInterval = pollingInterval\n this._retryTimeout = retryTimeout\n this._keepEventLoopActive = keepEventLoopActive\n this._setSkipCacheFlag = setSkipCacheFlag\n }\n\n //\n // public\n //\n\n // trigger block polling\n async checkForLatestBlock () {\n await this._updateLatestBlock()\n return await this.getLatestBlock()\n }\n\n //\n // private\n //\n\n _start () {\n this._performSync().catch(err => this.emit('error', err))\n }\n\n async _performSync () {\n while (this._isRunning) {\n try {\n await this._updateLatestBlock()\n await timeout(this._pollingInterval, !this._keepEventLoopActive)\n } catch (err) {\n const newErr = new Error(`PollingBlockTracker - encountered an error while attempting to update latest block:\\n${err.stack}`)\n try {\n this.emit('error', newErr)\n } catch (emitErr) {\n console.error(newErr)\n }\n await timeout(this._retryTimeout, !this._keepEventLoopActive)\n }\n }\n }\n\n async _updateLatestBlock () {\n // fetch + set latest block\n const latestBlock = await this._fetchLatestBlock()\n this._newPotentialLatest(latestBlock)\n }\n\n async _fetchLatestBlock () {\n const req = { jsonrpc: \"2.0\", id: 1, method: 'eth_blockNumber', params: [] }\n if (this._setSkipCacheFlag) req.skipCache = true\n const res = await pify((cb) => this._provider.sendAsync(req, cb))()\n if (res.error) throw new Error(`PollingBlockTracker - encountered error fetching block:\\n${res.error}`)\n return res.result\n }\n\n}\n\nmodule.exports = PollingBlockTracker\n\nfunction timeout (duration, unref) {\n return new Promise(resolve => {\n const timoutRef = setTimeout(resolve, duration)\n // don't keep process open\n if (timoutRef.unref && unref) {\n timoutRef.unref()\n }\n })\n}\n","var sha3 = require('js-sha3').keccak_256\nvar uts46 = require('idna-uts46-hx')\n\nfunction namehash (inputName) {\n // Reject empty names:\n var node = ''\n for (var i = 0; i < 32; i++) {\n node += '00'\n }\n\n name = normalize(inputName)\n\n if (name) {\n var labels = name.split('.')\n\n for(var i = labels.length - 1; i >= 0; i--) {\n var labelSha = sha3(labels[i])\n node = sha3(new Buffer(node + labelSha, 'hex'))\n }\n }\n\n return '0x' + node\n}\n\nfunction normalize(name) {\n return name ? uts46.toUnicode(name, {useStd3ASCII: true, transitional: false}) : name\n}\n\nexports.hash = namehash\nexports.normalize = normalize\n","/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n","const BaseFilter = require('./base-filter')\n\n// tracks all results ever recorded\nclass BaseFilterWithHistory extends BaseFilter {\n\n constructor () {\n super()\n this.allResults = []\n }\n\n async update () {\n throw new Error('BaseFilterWithHistory - no update method specified')\n }\n\n addResults (newResults) {\n this.allResults = this.allResults.concat(newResults)\n super.addResults(newResults)\n }\n\n addInitialResults (newResults) {\n this.allResults = this.allResults.concat(newResults)\n super.addInitialResults(newResults)\n }\n\n getAllResults () {\n return this.allResults\n }\n\n}\n\nmodule.exports = BaseFilterWithHistory","const SafeEventEmitter = require('@metamask/safe-event-emitter').default\n\nclass BaseFilter extends SafeEventEmitter {\n\n constructor () {\n super()\n this.updates = []\n }\n\n async initialize () {}\n\n async update () {\n throw new Error('BaseFilter - no update method specified')\n }\n\n addResults (newResults) {\n this.updates = this.updates.concat(newResults)\n newResults.forEach(result => this.emit('update', result))\n }\n\n addInitialResults (newResults) {}\n\n getChangesAndClear () {\n const updates = this.updates\n this.updates = []\n return updates\n }\n \n}\n\nmodule.exports = BaseFilter\n","const BaseFilter = require('./base-filter')\nconst getBlocksForRange = require('./getBlocksForRange')\nconst { incrementHexInt } = require('./hexUtils')\n\nclass BlockFilter extends BaseFilter {\n\n constructor ({ provider, params }) {\n super()\n this.type = 'block'\n this.provider = provider\n }\n\n async update ({ oldBlock, newBlock }) {\n const toBlock = newBlock\n const fromBlock = incrementHexInt(oldBlock)\n const blockBodies = await getBlocksForRange({ provider: this.provider, fromBlock, toBlock })\n const blockHashes = blockBodies.map((block) => block.hash)\n this.addResults(blockHashes)\n }\n\n}\n\nmodule.exports = BlockFilter\n","module.exports = getBlocksForRange\n\nasync function getBlocksForRange({ provider, fromBlock, toBlock }) {\n if (!fromBlock) fromBlock = toBlock\n\n const fromBlockNumber = hexToInt(fromBlock)\n const toBlockNumber = hexToInt(toBlock)\n const blockCountToQuery = toBlockNumber - fromBlockNumber + 1\n // load all blocks from old to new (inclusive)\n const missingBlockNumbers = Array(blockCountToQuery).fill()\n .map((_,index) => fromBlockNumber + index)\n .map(intToHex)\n const blockBodies = await Promise.all(\n missingBlockNumbers.map(blockNum => query(provider, 'eth_getBlockByNumber', [blockNum, false]))\n )\n return blockBodies\n}\n\nfunction hexToInt(hexString) {\n if (hexString === undefined || hexString === null) return hexString\n return Number.parseInt(hexString, 16)\n}\n\nfunction incrementHexInt(hexString){\n if (hexString === undefined || hexString === null) return hexString\n const value = hexToInt(hexString)\n return intToHex(value + 1)\n}\n\nfunction intToHex(int) {\n if (int === undefined || int === null) return int\n const hexString = int.toString(16)\n return '0x' + hexString\n}\n\nfunction query(provider, method, params) {\n return new Promise((resolve, reject) => {\n provider.sendAsync({ id: 1, jsonrpc: '2.0', method, params }, (err, res) => {\n if (err) return reject(err)\n resolve(res.result)\n })\n })\n}\n","\nmodule.exports = {\n minBlockRef,\n maxBlockRef,\n sortBlockRefs,\n bnToHex,\n blockRefIsNumber,\n hexToInt,\n incrementHexInt,\n intToHex,\n unsafeRandomBytes,\n}\n\nfunction minBlockRef(...refs) {\n const sortedRefs = sortBlockRefs(refs)\n return sortedRefs[0]\n}\n\nfunction maxBlockRef(...refs) {\n const sortedRefs = sortBlockRefs(refs)\n return sortedRefs[sortedRefs.length-1]\n}\n\nfunction sortBlockRefs(refs) {\n return refs.sort((refA, refB) => {\n if (refA === 'latest' || refB === 'earliest') return 1\n if (refB === 'latest' || refA === 'earliest') return -1\n return hexToInt(refA) - hexToInt(refB)\n })\n}\n\nfunction bnToHex(bn) {\n return '0x' + bn.toString(16)\n}\n\nfunction blockRefIsNumber(blockRef){\n return blockRef && !['earliest', 'latest', 'pending'].includes(blockRef)\n}\n\nfunction hexToInt(hexString) {\n if (hexString === undefined || hexString === null) return hexString\n return Number.parseInt(hexString, 16)\n}\n\nfunction incrementHexInt(hexString){\n if (hexString === undefined || hexString === null) return hexString\n const value = hexToInt(hexString)\n return intToHex(value + 1)\n}\n\nfunction intToHex(int) {\n if (int === undefined || int === null) return int\n let hexString = int.toString(16)\n const needsLeftPad = hexString.length % 2\n if (needsLeftPad) hexString = '0' + hexString\n return '0x' + hexString\n}\n\nfunction unsafeRandomBytes(byteCount) {\n let result = '0x'\n for (let i = 0; i < byteCount; i++) {\n result += unsafeRandomNibble()\n result += unsafeRandomNibble()\n }\n return result\n}\n\nfunction unsafeRandomNibble() {\n return Math.floor(Math.random() * 16).toString(16)\n}\n","const Mutex = require('async-mutex').Mutex\nconst { createAsyncMiddleware } = require('json-rpc-engine')\nconst createJsonRpcMiddleware = require('eth-json-rpc-middleware/scaffold')\nconst LogFilter = require('./log-filter.js')\nconst BlockFilter = require('./block-filter.js')\nconst TxFilter = require('./tx-filter.js')\nconst { intToHex, hexToInt } = require('./hexUtils')\n\nmodule.exports = createEthFilterMiddleware\n\nfunction createEthFilterMiddleware({ blockTracker, provider }) {\n\n // create filter collection\n let filterIndex = 0\n let filters = {}\n // create update mutex\n const mutex = new Mutex()\n const waitForFree = mutexMiddlewareWrapper({ mutex })\n\n const middleware = createJsonRpcMiddleware({\n // install filters\n eth_newFilter: waitForFree(toFilterCreationMiddleware(newLogFilter)),\n eth_newBlockFilter: waitForFree(toFilterCreationMiddleware(newBlockFilter)),\n eth_newPendingTransactionFilter: waitForFree(toFilterCreationMiddleware(newPendingTransactionFilter)),\n // uninstall filters\n eth_uninstallFilter: waitForFree(toAsyncRpcMiddleware(uninstallFilterHandler)),\n // checking filter changes\n eth_getFilterChanges: waitForFree(toAsyncRpcMiddleware(getFilterChanges)),\n eth_getFilterLogs: waitForFree(toAsyncRpcMiddleware(getFilterLogs)),\n })\n\n // setup filter updating and destroy handler\n const filterUpdater = async ({ oldBlock, newBlock }) => {\n if (filters.length === 0) return\n // lock update reads\n const releaseLock = await mutex.acquire()\n try {\n // process all filters in parallel\n await Promise.all(objValues(filters).map(async (filter) => {\n try {\n await filter.update({ oldBlock, newBlock })\n } catch (err) {\n // handle each error individually so filter update errors don't affect other filters\n console.error(err)\n }\n }))\n } catch (err) {\n // log error so we don't skip the releaseLock\n console.error(err)\n }\n // unlock update reads\n releaseLock()\n }\n\n // expose filter methods directly\n middleware.newLogFilter = newLogFilter\n middleware.newBlockFilter = newBlockFilter\n middleware.newPendingTransactionFilter = newPendingTransactionFilter\n middleware.uninstallFilter = uninstallFilterHandler\n middleware.getFilterChanges = getFilterChanges\n middleware.getFilterLogs = getFilterLogs\n\n // expose destroy method for cleanup\n middleware.destroy = () => {\n uninstallAllFilters()\n }\n\n return middleware\n\n //\n // new filters\n //\n\n async function newLogFilter(params) {\n const filter = new LogFilter({ provider, params })\n const filterIndex = await installFilter(filter)\n return filter\n }\n\n async function newBlockFilter() {\n const filter = new BlockFilter({ provider })\n const filterIndex = await installFilter(filter)\n return filter\n }\n\n async function newPendingTransactionFilter() {\n const filter = new TxFilter({ provider })\n const filterIndex = await installFilter(filter)\n return filter\n }\n\n //\n // get filter changes\n //\n\n async function getFilterChanges(filterIndexHex) {\n const filterIndex = hexToInt(filterIndexHex)\n const filter = filters[filterIndex]\n if (!filter) {\n throw new Error(`No filter for index \"${filterIndex}\"`)\n }\n const results = filter.getChangesAndClear()\n return results\n }\n\n async function getFilterLogs(filterIndexHex) {\n const filterIndex = hexToInt(filterIndexHex)\n const filter = filters[filterIndex]\n if (!filter) {\n throw new Error(`No filter for index \"${filterIndex}\"`)\n }\n // only return results for log filters\n if (filter.type === 'log') {\n results = filter.getAllResults()\n } else {\n results = []\n }\n return results\n }\n\n\n //\n // remove filters\n //\n\n\n async function uninstallFilterHandler(filterIndexHex) {\n // check filter exists\n const filterIndex = hexToInt(filterIndexHex)\n const filter = filters[filterIndex]\n const result = Boolean(filter)\n // uninstall filter\n if (result) {\n await uninstallFilter(filterIndex)\n }\n return result\n }\n\n //\n // utils\n //\n\n async function installFilter(filter) {\n const prevFilterCount = objValues(filters).length\n // install filter\n const currentBlock = await blockTracker.getLatestBlock()\n await filter.initialize({ currentBlock })\n filterIndex++\n filters[filterIndex] = filter\n filter.id = filterIndex\n filter.idHex = intToHex(filterIndex)\n // update block tracker subs\n const newFilterCount = objValues(filters).length\n updateBlockTrackerSubs({ prevFilterCount, newFilterCount })\n return filterIndex\n }\n\n async function uninstallFilter(filterIndex) {\n const prevFilterCount = objValues(filters).length\n delete filters[filterIndex]\n // update block tracker subs\n const newFilterCount = objValues(filters).length\n updateBlockTrackerSubs({ prevFilterCount, newFilterCount })\n }\n\n async function uninstallAllFilters() {\n const prevFilterCount = objValues(filters).length\n filters = {}\n // update block tracker subs\n updateBlockTrackerSubs({ prevFilterCount, newFilterCount: 0 })\n }\n\n function updateBlockTrackerSubs({ prevFilterCount, newFilterCount }) {\n // subscribe\n if (prevFilterCount === 0 && newFilterCount > 0) {\n blockTracker.on('sync', filterUpdater)\n return\n }\n // unsubscribe\n if (prevFilterCount > 0 && newFilterCount === 0) {\n blockTracker.removeListener('sync', filterUpdater)\n return\n }\n }\n\n}\n\n// helper for turning filter constructors into rpc middleware\nfunction toFilterCreationMiddleware(createFilterFn) {\n return toAsyncRpcMiddleware(async (...args) => {\n const filter = await createFilterFn(...args)\n const result = intToHex(filter.id)\n return result\n })\n}\n\n// helper for pulling out req.params and setting res.result\nfunction toAsyncRpcMiddleware(asyncFn) {\n return createAsyncMiddleware(async (req, res) => {\n const result = await asyncFn.apply(null, req.params)\n res.result = result\n })\n}\n\nfunction mutexMiddlewareWrapper({ mutex }) {\n return (middleware) => {\n return async (req, res, next, end) => {\n // wait for mutex available\n // we can release immediately because\n // we just need to make sure updates aren't active\n const releaseLock = await mutex.acquire()\n releaseLock()\n middleware(req, res, next, end)\n }\n }\n}\n\nfunction objValues(obj, fn){\n const values = []\n for (let key in obj) {\n values.push(obj[key])\n }\n return values\n}\n","const EthQuery = require('eth-query')\nconst pify = require('pify')\nconst BaseFilterWithHistory = require('./base-filter-history')\nconst { bnToHex, hexToInt, incrementHexInt, minBlockRef, blockRefIsNumber } = require('./hexUtils')\n\nclass LogFilter extends BaseFilterWithHistory {\n\n constructor ({ provider, params }) {\n super()\n this.type = 'log'\n this.ethQuery = new EthQuery(provider)\n this.params = Object.assign({\n fromBlock: 'latest',\n toBlock: 'latest',\n address: undefined,\n topics: [],\n }, params)\n // normalize address parameter\n if (this.params.address) {\n // ensure array\n if (!Array.isArray(this.params.address)) {\n this.params.address = [this.params.address]\n }\n // ensure lowercase\n this.params.address = this.params.address.map(address => address.toLowerCase())\n }\n }\n\n async initialize({ currentBlock }) {\n // resolve params.fromBlock\n let fromBlock = this.params.fromBlock\n if (['latest', 'pending'].includes(fromBlock)) fromBlock = currentBlock\n if ('earliest' === fromBlock) fromBlock = '0x0'\n this.params.fromBlock = fromBlock\n // set toBlock for initial lookup\n const toBlock = minBlockRef(this.params.toBlock, currentBlock)\n const params = Object.assign({}, this.params, { toBlock })\n // fetch logs and add to results\n const newLogs = await this._fetchLogs(params)\n this.addInitialResults(newLogs)\n }\n\n async update ({ oldBlock, newBlock }) {\n // configure params for this update\n const toBlock = newBlock\n let fromBlock\n // oldBlock is empty on first sync\n if (oldBlock) {\n fromBlock = incrementHexInt(oldBlock)\n } else {\n fromBlock = newBlock\n }\n // fetch logs\n const params = Object.assign({}, this.params, { fromBlock, toBlock })\n const newLogs = await this._fetchLogs(params)\n const matchingLogs = newLogs.filter(log => this.matchLog(log))\n\n // add to results\n this.addResults(matchingLogs)\n }\n\n async _fetchLogs (params) {\n const newLogs = await pify(cb => this.ethQuery.getLogs(params, cb))()\n // add to results\n return newLogs\n }\n\n matchLog(log) {\n // check if block number in bounds:\n if (hexToInt(this.params.fromBlock) >= hexToInt(log.blockNumber)) return false\n if (blockRefIsNumber(this.params.toBlock) && hexToInt(this.params.toBlock) <= hexToInt(log.blockNumber)) return false\n\n // address is correct:\n const normalizedLogAddress = log.address && log.address.toLowerCase()\n if (this.params.address && normalizedLogAddress && !this.params.address.includes(normalizedLogAddress)) return false\n\n // topics match:\n // topics are position-dependant\n // topics can be nested to represent `or` [[a || b], c]\n // topics can be null, representing a wild card for that position\n const topicsMatch = this.params.topics.every((topicPattern, index) => {\n // pattern is longer than actual topics\n let logTopic = log.topics[index]\n if (!logTopic) return false\n logTopic = logTopic.toLowerCase()\n // normalize subTopics\n let subtopicsToMatch = Array.isArray(topicPattern) ? topicPattern : [topicPattern]\n // check for wild card\n const subtopicsIncludeWildcard = subtopicsToMatch.includes(null)\n if (subtopicsIncludeWildcard) return true\n subtopicsToMatch = subtopicsToMatch.map(topic => topic.toLowerCase())\n // check each possible matching topic\n const topicDoesMatch = subtopicsToMatch.includes(logTopic)\n return topicDoesMatch\n })\n\n return topicsMatch\n }\n\n}\n\nmodule.exports = LogFilter\n",null,null,null,null,null,null,null,null,null,null,null,"'use strict';\n\nconst processFn = (fn, options, proxy, unwrapped) => function (...arguments_) {\n\tconst P = options.promiseModule;\n\n\treturn new P((resolve, reject) => {\n\t\tif (options.multiArgs) {\n\t\t\targuments_.push((...result) => {\n\t\t\t\tif (options.errorFirst) {\n\t\t\t\t\tif (result[0]) {\n\t\t\t\t\t\treject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.shift();\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (options.errorFirst) {\n\t\t\targuments_.push((error, result) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targuments_.push(resolve);\n\t\t}\n\n\t\tconst self = this === proxy ? unwrapped : this;\n\t\tReflect.apply(fn, self, arguments_);\n\t});\n};\n\nconst filterCache = new WeakMap();\n\nmodule.exports = (input, options) => {\n\toptions = {\n\t\texclude: [/.+(?:Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise,\n\t\t...options\n\t};\n\n\tconst objectType = typeof input;\n\tif (!(input !== null && (objectType === 'object' || objectType === 'function'))) {\n\t\tthrow new TypeError(`Expected \\`input\\` to be a \\`Function\\` or \\`Object\\`, got \\`${input === null ? 'null' : objectType}\\``);\n\t}\n\n\tconst filter = (target, key) => {\n\t\tlet cached = filterCache.get(target);\n\n\t\tif (!cached) {\n\t\t\tcached = {};\n\t\t\tfilterCache.set(target, cached);\n\t\t}\n\n\t\tif (key in cached) {\n\t\t\treturn cached[key];\n\t\t}\n\n\t\tconst match = pattern => (typeof pattern === 'string' || typeof key === 'symbol') ? key === pattern : pattern.test(key);\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(target, key);\n\t\tconst writableOrConfigurableOwn = (desc === undefined || desc.writable || desc.configurable);\n\t\tconst included = options.include ? options.include.some(match) : !options.exclude.some(match);\n\t\tconst shouldFilter = included && writableOrConfigurableOwn;\n\t\tcached[key] = shouldFilter;\n\t\treturn shouldFilter;\n\t};\n\n\tconst cache = new WeakMap();\n\n\tconst proxy = new Proxy(input, {\n\t\tapply(target, thisArg, args) {\n\t\t\tconst cached = cache.get(target);\n\n\t\t\tif (cached) {\n\t\t\t\treturn Reflect.apply(cached, thisArg, args);\n\t\t\t}\n\n\t\t\tconst pified = options.excludeMain ? target : processFn(target, options, proxy, target);\n\t\t\tcache.set(target, pified);\n\t\t\treturn Reflect.apply(pified, thisArg, args);\n\t\t},\n\n\t\tget(target, key) {\n\t\t\tconst property = target[key];\n\n\t\t\t// eslint-disable-next-line no-use-extend-native/no-use-extend-native\n\t\t\tif (!filter(target, key) || property === Function.prototype[key]) {\n\t\t\t\treturn property;\n\t\t\t}\n\n\t\t\tconst cached = cache.get(property);\n\n\t\t\tif (cached) {\n\t\t\t\treturn cached;\n\t\t\t}\n\n\t\t\tif (typeof property === 'function') {\n\t\t\t\tconst pified = processFn(property, options, proxy, target);\n\t\t\t\tcache.set(property, pified);\n\t\t\t\treturn pified;\n\t\t\t}\n\n\t\t\treturn property;\n\t\t}\n\t});\n\n\treturn proxy;\n};\n","const SafeEventEmitter = require('@metamask/safe-event-emitter').default\nconst createScaffoldMiddleware = require('eth-json-rpc-middleware/scaffold')\nconst { createAsyncMiddleware } = require('json-rpc-engine')\nconst createFilterMiddleware = require('./index.js')\nconst { unsafeRandomBytes, incrementHexInt } = require('./hexUtils.js')\nconst getBlocksForRange = require('./getBlocksForRange.js')\n\nmodule.exports = createSubscriptionMiddleware\n\n\nfunction createSubscriptionMiddleware({ blockTracker, provider }) {\n // state and utilities for handling subscriptions\n const subscriptions = {}\n const filterManager = createFilterMiddleware({ blockTracker, provider })\n\n // internal flag\n let isDestroyed = false\n\n // create subscriptionManager api object\n const events = new SafeEventEmitter()\n const middleware = createScaffoldMiddleware({\n eth_subscribe: createAsyncMiddleware(subscribe),\n eth_unsubscribe: createAsyncMiddleware(unsubscribe),\n })\n middleware.destroy = destroy\n return { events, middleware }\n\n async function subscribe(req, res) {\n\n if (isDestroyed) throw new Error(\n 'SubscriptionManager - attempting to use after destroying'\n )\n\n const subscriptionType = req.params[0]\n // subId is 16 byte hex string\n const subId = unsafeRandomBytes(16)\n\n // create sub\n let sub\n switch (subscriptionType) {\n case 'newHeads':\n sub = createSubNewHeads({ subId })\n break\n case 'logs':\n const filterParams = req.params[1]\n const filter = await filterManager.newLogFilter(filterParams)\n sub = createSubFromFilter({ subId, filter })\n break\n default:\n throw new Error(`SubscriptionManager - unsupported subscription type \"${subscriptionType}\"`)\n\n }\n subscriptions[subId] = sub\n\n res.result = subId\n return\n\n function createSubNewHeads({ subId }) {\n const sub = {\n type: subscriptionType,\n destroy: async () => {\n blockTracker.removeListener('sync', sub.update)\n },\n update: async ({ oldBlock, newBlock }) => {\n // for newHeads\n const toBlock = newBlock\n const fromBlock = incrementHexInt(oldBlock)\n const rawBlocks = await getBlocksForRange({ provider, fromBlock, toBlock })\n const results = rawBlocks.map(normalizeBlock)\n results.forEach((value) => {\n _emitSubscriptionResult(subId, value)\n })\n }\n }\n // check for subscription updates on new block\n blockTracker.on('sync', sub.update)\n return sub\n }\n\n function createSubFromFilter({ subId, filter }){\n filter.on('update', result => _emitSubscriptionResult(subId, result))\n const sub = {\n type: subscriptionType,\n destroy: async () => {\n return await filterManager.uninstallFilter(filter.idHex)\n },\n }\n return sub\n }\n }\n\n async function unsubscribe(req, res) {\n\n if (isDestroyed) throw new Error(\n 'SubscriptionManager - attempting to use after destroying'\n )\n\n const id = req.params[0]\n const subscription = subscriptions[id]\n // if missing, return \"false\" to indicate it was not removed\n if (!subscription) {\n res.result = false\n return\n }\n // cleanup subscription\n delete subscriptions[id]\n await subscription.destroy()\n res.result = true\n }\n\n function _emitSubscriptionResult(filterIdHex, value) {\n events.emit('notification', {\n jsonrpc: '2.0',\n method: 'eth_subscription',\n params: {\n subscription: filterIdHex,\n result: value,\n },\n })\n }\n\n function destroy () {\n events.removeAllListeners()\n for (const id in subscriptions) {\n subscriptions[id].destroy()\n delete subscriptions[id]\n }\n isDestroyed = true\n }\n}\n\nfunction normalizeBlock(block) {\n return {\n hash: block.hash,\n parentHash: block.parentHash,\n sha3Uncles: block.sha3Uncles,\n miner: block.miner,\n stateRoot: block.stateRoot,\n transactionsRoot: block.transactionsRoot,\n receiptsRoot: block.receiptsRoot,\n logsBloom: block.logsBloom,\n difficulty: block.difficulty,\n number: block.number,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n nonce: block.nonce,\n mixHash: block.mixHash,\n timestamp: block.timestamp,\n extraData: block.extraData,\n }\n}\n","const BaseFilter = require('./base-filter')\nconst getBlocksForRange = require('./getBlocksForRange')\nconst { incrementHexInt } = require('./hexUtils')\n\nclass TxFilter extends BaseFilter {\n\n constructor ({ provider }) {\n super()\n this.type = 'tx'\n this.provider = provider\n }\n\n async update ({ oldBlock }) {\n const toBlock = oldBlock\n const fromBlock = incrementHexInt(oldBlock)\n const blocks = await getBlocksForRange({ provider: this.provider, fromBlock, toBlock })\n const blockTxHashes = []\n for (const block of blocks) {\n blockTxHashes.push(...block.transactions)\n }\n // add to results\n this.addResults(blockTxHashes)\n }\n\n}\n\nmodule.exports = TxFilter\n","const cacheUtils = require('./cache-utils.js')\nconst createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')\n// `` comes from https://github.com/ethereum/go-ethereum/issues/16925\nconst emptyValues = [undefined, null, '\\u003cnil\\u003e']\n\nmodule.exports = createBlockCacheMiddleware\n\n\nfunction createBlockCacheMiddleware(opts = {}) {\n // validate options\n const { blockTracker } = opts\n if (!blockTracker) throw new Error('createBlockCacheMiddleware - No BlockTracker specified')\n\n // create caching strategies\n const blockCache = new BlockCacheStrategy()\n const strategies = {\n perma: blockCache,\n block: blockCache,\n fork: blockCache,\n }\n\n return createAsyncMiddleware(async (req, res, next) => {\n // allow cach to be skipped if so specified\n if (req.skipCache) {\n return next()\n }\n // check type and matching strategy\n const type = cacheUtils.cacheTypeForPayload(req)\n const strategy = strategies[type]\n // If there's no strategy in place, pass it down the chain.\n if (!strategy) {\n return next()\n }\n // If the strategy can't cache this request, ignore it.\n if (!strategy.canCacheRequest(req)) {\n return next()\n }\n\n // get block reference (number or keyword)\n let blockTag = cacheUtils.blockTagForPayload(req)\n if (!blockTag) blockTag = 'latest'\n\n // get exact block number\n let requestedBlockNumber\n if (blockTag === 'earliest') {\n // this just exists for symmetry with \"latest\"\n requestedBlockNumber = '0x00'\n } else if (blockTag === 'latest') {\n // fetch latest block number\n const latestBlockNumber = await blockTracker.getLatestBlock()\n // clear all cache before latest block\n blockCache.clearBefore(latestBlockNumber)\n requestedBlockNumber = latestBlockNumber\n } else {\n // We have a hex number\n requestedBlockNumber = blockTag\n }\n\n // end on a hit, continue on a miss\n const cacheResult = await strategy.get(req, requestedBlockNumber)\n if (cacheResult === undefined) {\n // cache miss\n // wait for other middleware to handle request\n await next()\n // add result to cache\n await strategy.set(req, requestedBlockNumber, res.result)\n } else {\n // fill in result from cache\n res.result = cacheResult\n }\n })\n}\n\n\n//\n// Cache Strategies\n//\n\nclass BlockCacheStrategy {\n \n constructor () {\n this.cache = {}\n }\n\n getBlockCacheForPayload (payload, blockNumberHex) {\n const blockNumber = Number.parseInt(blockNumberHex, 16)\n let blockCache = this.cache[blockNumber]\n // create new cache if necesary\n if (!blockCache) {\n const newCache = {}\n this.cache[blockNumber] = newCache\n blockCache = newCache\n }\n return blockCache\n }\n\n async get (payload, requestedBlockNumber) {\n // lookup block cache\n const blockCache = this.getBlockCacheForPayload(payload, requestedBlockNumber)\n if (!blockCache) return\n // lookup payload in block cache\n const identifier = cacheUtils.cacheIdentifierForPayload(payload, true)\n const cached = blockCache[identifier]\n // may be undefined\n return cached\n }\n\n async set (payload, requestedBlockNumber, result) {\n // check if we can cached this result\n const canCache = this.canCacheResult(payload, result)\n if (!canCache) return\n // set the value in the cache\n const blockCache = this.getBlockCacheForPayload(payload, requestedBlockNumber)\n const identifier = cacheUtils.cacheIdentifierForPayload(payload, true)\n blockCache[identifier] = result\n }\n\n canCacheRequest (payload) {\n // check request method\n if (!cacheUtils.canCache(payload)) {\n return false\n }\n // check blockTag\n const blockTag = cacheUtils.blockTagForPayload(payload)\n if (blockTag === 'pending') {\n return false\n }\n // can be cached\n return true\n }\n\n canCacheResult (payload, result) {\n // never cache empty values (e.g. undefined)\n if (emptyValues.includes(result)) return\n // check if transactions have block reference before caching\n if (['eth_getTransactionByHash', 'eth_getTransactionReceipt'].includes(payload.method)) {\n if (!result || !result.blockHash || result.blockHash === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n return false\n }\n }\n // otherwise true\n return true\n }\n\n // removes all block caches with block number lower than `oldBlockHex`\n clearBefore (oldBlockHex){\n const self = this\n const oldBlockNumber = Number.parseInt(oldBlockHex, 16)\n // clear old caches\n Object.keys(self.cache)\n .map(Number)\n .filter(num => num < oldBlockNumber)\n .forEach(num => delete self.cache[num])\n }\n\n}\n","const stringify = require('json-stable-stringify')\n\nmodule.exports = {\n cacheIdentifierForPayload: cacheIdentifierForPayload,\n canCache: canCache,\n blockTagForPayload: blockTagForPayload,\n paramsWithoutBlockTag: paramsWithoutBlockTag,\n blockTagParamIndex: blockTagParamIndex,\n cacheTypeForPayload: cacheTypeForPayload\n}\n\nfunction cacheIdentifierForPayload (payload, skipBlockRef) {\n const simpleParams = skipBlockRef ? paramsWithoutBlockTag(payload) : payload.params\n if (canCache(payload)) {\n return payload.method + ':' + stringify(simpleParams)\n } else {\n return null\n }\n}\n\nfunction canCache (payload) {\n return cacheTypeForPayload(payload) !== 'never'\n}\n\nfunction blockTagForPayload (payload) {\n let index = blockTagParamIndex(payload)\n\n // Block tag param not passed.\n if (index >= payload.params.length) {\n return null\n }\n\n return payload.params[index]\n}\n\nfunction paramsWithoutBlockTag (payload) {\n const index = blockTagParamIndex(payload)\n\n // Block tag param not passed.\n if (index >= payload.params.length) {\n return payload.params\n }\n\n // eth_getBlockByNumber has the block tag first, then the optional includeTx? param\n if (payload.method === 'eth_getBlockByNumber') {\n return payload.params.slice(1)\n }\n\n return payload.params.slice(0, index)\n}\n\nfunction blockTagParamIndex (payload) {\n switch (payload.method) {\n // blockTag is at index 2\n case 'eth_getStorageAt':\n return 2\n // blockTag is at index 1\n case 'eth_getBalance':\n case 'eth_getCode':\n case 'eth_getTransactionCount':\n case 'eth_call':\n return 1\n // blockTag is at index 0\n case 'eth_getBlockByNumber':\n return 0\n // there is no blockTag\n default:\n return undefined\n }\n}\n\nfunction cacheTypeForPayload (payload) {\n switch (payload.method) {\n // cache permanently\n case 'web3_clientVersion':\n case 'web3_sha3':\n case 'eth_protocolVersion':\n case 'eth_getBlockTransactionCountByHash':\n case 'eth_getUncleCountByBlockHash':\n case 'eth_getCode':\n case 'eth_getBlockByHash':\n case 'eth_getTransactionByHash':\n case 'eth_getTransactionByBlockHashAndIndex':\n case 'eth_getTransactionReceipt':\n case 'eth_getUncleByBlockHashAndIndex':\n case 'eth_getCompilers':\n case 'eth_compileLLL':\n case 'eth_compileSolidity':\n case 'eth_compileSerpent':\n case 'shh_version':\n case 'test_permaCache':\n return 'perma'\n\n // cache until fork\n case 'eth_getBlockByNumber':\n case 'eth_getBlockTransactionCountByNumber':\n case 'eth_getUncleCountByBlockNumber':\n case 'eth_getTransactionByBlockNumberAndIndex':\n case 'eth_getUncleByBlockNumberAndIndex':\n case 'test_forkCache':\n return 'fork'\n\n // cache for block\n case 'eth_gasPrice':\n case 'eth_blockNumber':\n case 'eth_getBalance':\n case 'eth_getStorageAt':\n case 'eth_getTransactionCount':\n case 'eth_call':\n case 'eth_estimateGas':\n case 'eth_getFilterLogs':\n case 'eth_getLogs':\n case 'test_blockCache':\n return 'block'\n\n // never cache\n case 'net_version':\n case 'net_peerCount':\n case 'net_listening':\n case 'eth_syncing':\n case 'eth_sign':\n case 'eth_coinbase':\n case 'eth_mining':\n case 'eth_hashrate':\n case 'eth_accounts':\n case 'eth_sendTransaction':\n case 'eth_sendRawTransaction':\n case 'eth_newFilter':\n case 'eth_newBlockFilter':\n case 'eth_newPendingTransactionFilter':\n case 'eth_uninstallFilter':\n case 'eth_getFilterChanges':\n case 'eth_getWork':\n case 'eth_submitWork':\n case 'eth_submitHashrate':\n case 'db_putString':\n case 'db_getString':\n case 'db_putHex':\n case 'db_getHex':\n case 'shh_post':\n case 'shh_newIdentity':\n case 'shh_hasIdentity':\n case 'shh_newGroup':\n case 'shh_addToGroup':\n case 'shh_newFilter':\n case 'shh_uninstallFilter':\n case 'shh_getFilterChanges':\n case 'shh_getMessages':\n case 'test_neverCache':\n return 'never'\n }\n}\n","// for backwards compat\nmodule.exports = require('json-rpc-engine/src/createScaffoldMiddleware')\n","const Bytes = require(\"./bytes\");\nconst Nat = require(\"./nat\");\nconst elliptic = require(\"elliptic\");\nconst rlp = require(\"./rlp\");\nconst secp256k1 = new elliptic.ec(\"secp256k1\"); // eslint-disable-line\nconst { keccak256, keccak256s } = require(\"./hash\");\n\nconst create = entropy => {\n const innerHex = keccak256(Bytes.concat(Bytes.random(32), entropy || Bytes.random(32)));\n const middleHex = Bytes.concat(Bytes.concat(Bytes.random(32), innerHex), Bytes.random(32));\n const outerHex = keccak256(middleHex);\n return fromPrivate(outerHex);\n};\n\nconst toChecksum = address => {\n const addressHash = keccak256s(address.slice(2));\n let checksumAddress = \"0x\";\n for (let i = 0; i < 40; i++) checksumAddress += parseInt(addressHash[i + 2], 16) > 7 ? address[i + 2].toUpperCase() : address[i + 2];\n return checksumAddress;\n};\n\nconst fromPrivate = privateKey => {\n const buffer = new Buffer(privateKey.slice(2), \"hex\");\n const ecKey = secp256k1.keyFromPrivate(buffer);\n const publicKey = \"0x\" + ecKey.getPublic(false, 'hex').slice(2);\n const publicHash = keccak256(publicKey);\n const address = toChecksum(\"0x\" + publicHash.slice(-40));\n return {\n address: address,\n privateKey: privateKey\n };\n};\n\nconst encodeSignature = ([v, r, s]) => Bytes.flatten([r, s, v]);\n\nconst decodeSignature = hex => [Bytes.slice(64, Bytes.length(hex), hex), Bytes.slice(0, 32, hex), Bytes.slice(32, 64, hex)];\n\nconst makeSigner = addToV => (hash, privateKey) => {\n const signature = secp256k1.keyFromPrivate(new Buffer(privateKey.slice(2), \"hex\")).sign(new Buffer(hash.slice(2), \"hex\"), { canonical: true });\n return encodeSignature([Nat.fromString(Bytes.fromNumber(addToV + signature.recoveryParam)), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.r.toString(16))), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.s.toString(16)))]);\n};\n\nconst sign = makeSigner(27); // v=27|28 instead of 0|1...\n\nconst recover = (hash, signature) => {\n const vals = decodeSignature(signature);\n const vrs = { v: Bytes.toNumber(vals[0]), r: vals[1].slice(2), s: vals[2].slice(2) };\n const ecPublicKey = secp256k1.recoverPubKey(new Buffer(hash.slice(2), \"hex\"), vrs, vrs.v < 2 ? vrs.v : 1 - vrs.v % 2); // because odd vals mean v=0... sadly that means v=0 means v=1... I hate that\n const publicKey = \"0x\" + ecPublicKey.encode(\"hex\", false).slice(2);\n const publicHash = keccak256(publicKey);\n const address = toChecksum(\"0x\" + publicHash.slice(-40));\n return address;\n};\n\nmodule.exports = {\n create,\n toChecksum,\n fromPrivate,\n sign,\n makeSigner,\n recover,\n encodeSignature,\n decodeSignature\n};","const generate = (num, fn) => {\n let a = [];\n for (var i = 0; i < num; ++i) a.push(fn(i));\n return a;\n};\n\nconst replicate = (num, val) => generate(num, () => val);\n\nconst concat = (a, b) => a.concat(b);\n\nconst flatten = a => {\n let r = [];\n for (let j = 0, J = a.length; j < J; ++j) for (let i = 0, I = a[j].length; i < I; ++i) r.push(a[j][i]);\n return r;\n};\n\nconst chunksOf = (n, a) => {\n let b = [];\n for (let i = 0, l = a.length; i < l; i += n) b.push(a.slice(i, i + n));\n return b;\n};\n\nmodule.exports = {\n generate,\n replicate,\n concat,\n flatten,\n chunksOf\n};","const A = require(\"./array.js\");\n\nconst at = (bytes, index) => parseInt(bytes.slice(index * 2 + 2, index * 2 + 4), 16);\n\nconst random = bytes => {\n let rnd;\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.getRandomValues) rnd = window.crypto.getRandomValues(new Uint8Array(bytes));else if (typeof require !== \"undefined\") rnd = require(\"c\" + \"rypto\").randomBytes(bytes);else throw \"Safe random numbers not available.\";\n let hex = \"0x\";\n for (let i = 0; i < bytes; ++i) hex += (\"00\" + rnd[i].toString(16)).slice(-2);\n return hex;\n};\n\nconst length = a => (a.length - 2) / 2;\n\nconst flatten = a => \"0x\" + a.reduce((r, s) => r + s.slice(2), \"\");\n\nconst slice = (i, j, bs) => \"0x\" + bs.slice(i * 2 + 2, j * 2 + 2);\n\nconst reverse = hex => {\n let rev = \"0x\";\n for (let i = 0, l = length(hex); i < l; ++i) {\n rev += hex.slice((l - i) * 2, (l - i + 1) * 2);\n }\n return rev;\n};\n\nconst pad = (l, hex) => hex.length === l * 2 + 2 ? hex : pad(l, \"0x\" + \"0\" + hex.slice(2));\n\nconst padRight = (l, hex) => hex.length === l * 2 + 2 ? hex : padRight(l, hex + \"0\");\n\nconst toArray = hex => {\n let arr = [];\n for (let i = 2, l = hex.length; i < l; i += 2) arr.push(parseInt(hex.slice(i, i + 2), 16));\n return arr;\n};\n\nconst fromArray = arr => {\n let hex = \"0x\";\n for (let i = 0, l = arr.length; i < l; ++i) {\n let b = arr[i];\n hex += (b < 16 ? \"0\" : \"\") + b.toString(16);\n }\n return hex;\n};\n\nconst toUint8Array = hex => new Uint8Array(toArray(hex));\n\nconst fromUint8Array = arr => fromArray([].slice.call(arr, 0));\n\nconst fromNumber = num => {\n let hex = num.toString(16);\n return hex.length % 2 === 0 ? \"0x\" + hex : \"0x0\" + hex;\n};\n\nconst toNumber = hex => parseInt(hex.slice(2), 16);\n\nconst concat = (a, b) => a.concat(b.slice(2));\n\nconst fromNat = bn => bn === \"0x0\" ? \"0x\" : bn.length % 2 === 0 ? bn : \"0x0\" + bn.slice(2);\n\nconst toNat = bn => bn[2] === \"0\" ? \"0x\" + bn.slice(3) : bn;\n\nconst fromAscii = ascii => {\n let hex = \"0x\";\n for (let i = 0; i < ascii.length; ++i) hex += (\"00\" + ascii.charCodeAt(i).toString(16)).slice(-2);\n return hex;\n};\n\nconst toAscii = hex => {\n let ascii = \"\";\n for (let i = 2; i < hex.length; i += 2) ascii += String.fromCharCode(parseInt(hex.slice(i, i + 2), 16));\n return ascii;\n};\n\n// From https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330\nconst fromString = s => {\n const makeByte = uint8 => {\n const b = uint8.toString(16);\n return b.length < 2 ? \"0\" + b : b;\n };\n let bytes = \"0x\";\n for (let ci = 0; ci != s.length; ci++) {\n let c = s.charCodeAt(ci);\n if (c < 128) {\n bytes += makeByte(c);\n continue;\n }\n if (c < 2048) {\n bytes += makeByte(c >> 6 | 192);\n } else {\n if (c > 0xd7ff && c < 0xdc00) {\n if (++ci == s.length) return null;\n let c2 = s.charCodeAt(ci);\n if (c2 < 0xdc00 || c2 > 0xdfff) return null;\n c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n bytes += makeByte(c >> 18 | 240);\n bytes += makeByte(c >> 12 & 63 | 128);\n } else {\n // c <= 0xffff\n bytes += makeByte(c >> 12 | 224);\n }\n bytes += makeByte(c >> 6 & 63 | 128);\n }\n bytes += makeByte(c & 63 | 128);\n }\n return bytes;\n};\n\nconst toString = bytes => {\n let s = '';\n let i = 0;\n let l = length(bytes);\n while (i < l) {\n let c = at(bytes, i++);\n if (c > 127) {\n if (c > 191 && c < 224) {\n if (i >= l) return null;\n c = (c & 31) << 6 | at(bytes, i) & 63;\n } else if (c > 223 && c < 240) {\n if (i + 1 >= l) return null;\n c = (c & 15) << 12 | (at(bytes, i) & 63) << 6 | at(bytes, ++i) & 63;\n } else if (c > 239 && c < 248) {\n if (i + 2 >= l) return null;\n c = (c & 7) << 18 | (at(bytes, i) & 63) << 12 | (at(bytes, ++i) & 63) << 6 | at(bytes, ++i) & 63;\n } else return null;\n ++i;\n }\n if (c <= 0xffff) s += String.fromCharCode(c);else if (c <= 0x10ffff) {\n c -= 0x10000;\n s += String.fromCharCode(c >> 10 | 0xd800);\n s += String.fromCharCode(c & 0x3FF | 0xdc00);\n } else return null;\n }\n return s;\n};\n\nmodule.exports = {\n random,\n length,\n concat,\n flatten,\n slice,\n reverse,\n pad,\n padRight,\n fromAscii,\n toAscii,\n fromString,\n toString,\n fromNumber,\n toNumber,\n fromNat,\n toNat,\n fromArray,\n toArray,\n fromUint8Array,\n toUint8Array\n};","// This was ported from https://github.com/emn178/js-sha3, with some minor\n// modifications and pruning. It is licensed under MIT:\n//\n// Copyright 2015-2016 Chen, Yi-Cyuan\n// \n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n// \n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst HEX_CHARS = '0123456789abcdef'.split('');\nconst KECCAK_PADDING = [1, 256, 65536, 16777216];\nconst SHIFT = [0, 8, 16, 24];\nconst RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n\nconst Keccak = bits => ({\n blocks: [],\n reset: true,\n block: 0,\n start: 0,\n blockCount: 1600 - (bits << 1) >> 5,\n outputBlocks: bits >> 5,\n s: (s => [].concat(s, s, s, s, s))([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n});\n\nconst update = (state, message) => {\n var length = message.length,\n blocks = state.blocks,\n byteCount = state.blockCount << 2,\n blockCount = state.blockCount,\n outputBlocks = state.outputBlocks,\n s = state.s,\n index = 0,\n i,\n code;\n\n // update\n while (index < length) {\n if (state.reset) {\n state.reset = false;\n blocks[0] = state.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (typeof message !== \"string\") {\n for (i = state.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = state.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n state.lastByteIndex = i;\n if (i >= byteCount) {\n state.start = i - byteCount;\n state.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n state.reset = true;\n } else {\n state.start = i;\n }\n }\n\n // finalize\n i = state.lastByteIndex;\n blocks[i >> 2] |= KECCAK_PADDING[i & 3];\n if (state.lastByteIndex === byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n\n // toString\n var hex = '',\n i = 0,\n j = 0,\n block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[block >> 4 & 0x0F] + HEX_CHARS[block & 0x0F] + HEX_CHARS[block >> 12 & 0x0F] + HEX_CHARS[block >> 8 & 0x0F] + HEX_CHARS[block >> 20 & 0x0F] + HEX_CHARS[block >> 16 & 0x0F] + HEX_CHARS[block >> 28 & 0x0F] + HEX_CHARS[block >> 24 & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n return \"0x\" + hex;\n};\n\nconst f = s => {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ (c2 << 1 | c3 >>> 31);\n l = c9 ^ (c3 << 1 | c2 >>> 31);\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ (c4 << 1 | c5 >>> 31);\n l = c1 ^ (c5 << 1 | c4 >>> 31);\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ (c6 << 1 | c7 >>> 31);\n l = c3 ^ (c7 << 1 | c6 >>> 31);\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ (c8 << 1 | c9 >>> 31);\n l = c5 ^ (c9 << 1 | c8 >>> 31);\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ (c0 << 1 | c1 >>> 31);\n l = c7 ^ (c1 << 1 | c0 >>> 31);\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = s[11] << 4 | s[10] >>> 28;\n b33 = s[10] << 4 | s[11] >>> 28;\n b14 = s[20] << 3 | s[21] >>> 29;\n b15 = s[21] << 3 | s[20] >>> 29;\n b46 = s[31] << 9 | s[30] >>> 23;\n b47 = s[30] << 9 | s[31] >>> 23;\n b28 = s[40] << 18 | s[41] >>> 14;\n b29 = s[41] << 18 | s[40] >>> 14;\n b20 = s[2] << 1 | s[3] >>> 31;\n b21 = s[3] << 1 | s[2] >>> 31;\n b2 = s[13] << 12 | s[12] >>> 20;\n b3 = s[12] << 12 | s[13] >>> 20;\n b34 = s[22] << 10 | s[23] >>> 22;\n b35 = s[23] << 10 | s[22] >>> 22;\n b16 = s[33] << 13 | s[32] >>> 19;\n b17 = s[32] << 13 | s[33] >>> 19;\n b48 = s[42] << 2 | s[43] >>> 30;\n b49 = s[43] << 2 | s[42] >>> 30;\n b40 = s[5] << 30 | s[4] >>> 2;\n b41 = s[4] << 30 | s[5] >>> 2;\n b22 = s[14] << 6 | s[15] >>> 26;\n b23 = s[15] << 6 | s[14] >>> 26;\n b4 = s[25] << 11 | s[24] >>> 21;\n b5 = s[24] << 11 | s[25] >>> 21;\n b36 = s[34] << 15 | s[35] >>> 17;\n b37 = s[35] << 15 | s[34] >>> 17;\n b18 = s[45] << 29 | s[44] >>> 3;\n b19 = s[44] << 29 | s[45] >>> 3;\n b10 = s[6] << 28 | s[7] >>> 4;\n b11 = s[7] << 28 | s[6] >>> 4;\n b42 = s[17] << 23 | s[16] >>> 9;\n b43 = s[16] << 23 | s[17] >>> 9;\n b24 = s[26] << 25 | s[27] >>> 7;\n b25 = s[27] << 25 | s[26] >>> 7;\n b6 = s[36] << 21 | s[37] >>> 11;\n b7 = s[37] << 21 | s[36] >>> 11;\n b38 = s[47] << 24 | s[46] >>> 8;\n b39 = s[46] << 24 | s[47] >>> 8;\n b30 = s[8] << 27 | s[9] >>> 5;\n b31 = s[9] << 27 | s[8] >>> 5;\n b12 = s[18] << 20 | s[19] >>> 12;\n b13 = s[19] << 20 | s[18] >>> 12;\n b44 = s[29] << 7 | s[28] >>> 25;\n b45 = s[28] << 7 | s[29] >>> 25;\n b26 = s[38] << 8 | s[39] >>> 24;\n b27 = s[39] << 8 | s[38] >>> 24;\n b8 = s[48] << 14 | s[49] >>> 18;\n b9 = s[49] << 14 | s[48] >>> 18;\n\n s[0] = b0 ^ ~b2 & b4;\n s[1] = b1 ^ ~b3 & b5;\n s[10] = b10 ^ ~b12 & b14;\n s[11] = b11 ^ ~b13 & b15;\n s[20] = b20 ^ ~b22 & b24;\n s[21] = b21 ^ ~b23 & b25;\n s[30] = b30 ^ ~b32 & b34;\n s[31] = b31 ^ ~b33 & b35;\n s[40] = b40 ^ ~b42 & b44;\n s[41] = b41 ^ ~b43 & b45;\n s[2] = b2 ^ ~b4 & b6;\n s[3] = b3 ^ ~b5 & b7;\n s[12] = b12 ^ ~b14 & b16;\n s[13] = b13 ^ ~b15 & b17;\n s[22] = b22 ^ ~b24 & b26;\n s[23] = b23 ^ ~b25 & b27;\n s[32] = b32 ^ ~b34 & b36;\n s[33] = b33 ^ ~b35 & b37;\n s[42] = b42 ^ ~b44 & b46;\n s[43] = b43 ^ ~b45 & b47;\n s[4] = b4 ^ ~b6 & b8;\n s[5] = b5 ^ ~b7 & b9;\n s[14] = b14 ^ ~b16 & b18;\n s[15] = b15 ^ ~b17 & b19;\n s[24] = b24 ^ ~b26 & b28;\n s[25] = b25 ^ ~b27 & b29;\n s[34] = b34 ^ ~b36 & b38;\n s[35] = b35 ^ ~b37 & b39;\n s[44] = b44 ^ ~b46 & b48;\n s[45] = b45 ^ ~b47 & b49;\n s[6] = b6 ^ ~b8 & b0;\n s[7] = b7 ^ ~b9 & b1;\n s[16] = b16 ^ ~b18 & b10;\n s[17] = b17 ^ ~b19 & b11;\n s[26] = b26 ^ ~b28 & b20;\n s[27] = b27 ^ ~b29 & b21;\n s[36] = b36 ^ ~b38 & b30;\n s[37] = b37 ^ ~b39 & b31;\n s[46] = b46 ^ ~b48 & b40;\n s[47] = b47 ^ ~b49 & b41;\n s[8] = b8 ^ ~b0 & b2;\n s[9] = b9 ^ ~b1 & b3;\n s[18] = b18 ^ ~b10 & b12;\n s[19] = b19 ^ ~b11 & b13;\n s[28] = b28 ^ ~b20 & b22;\n s[29] = b29 ^ ~b21 & b23;\n s[38] = b38 ^ ~b30 & b32;\n s[39] = b39 ^ ~b31 & b33;\n s[48] = b48 ^ ~b40 & b42;\n s[49] = b49 ^ ~b41 & b43;\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n};\n\nconst keccak = bits => str => {\n var msg;\n if (str.slice(0, 2) === \"0x\") {\n msg = [];\n for (var i = 2, l = str.length; i < l; i += 2) msg.push(parseInt(str.slice(i, i + 2), 16));\n } else {\n msg = str;\n }\n return update(Keccak(bits, bits), msg);\n};\n\nmodule.exports = {\n keccak256: keccak(256),\n keccak512: keccak(512),\n keccak256s: keccak(256),\n keccak512s: keccak(512)\n};","const BN = require(\"bn.js\");\nconst Bytes = require(\"./bytes\");\n\nconst fromBN = bn => \"0x\" + bn.toString(\"hex\");\n\nconst toBN = str => new BN(str.slice(2), 16);\n\nconst fromString = str => {\n const bn = \"0x\" + (str.slice(0, 2) === \"0x\" ? new BN(str.slice(2), 16) : new BN(str, 10)).toString(\"hex\");\n return bn === \"0x0\" ? \"0x\" : bn;\n};\n\nconst toEther = wei => toNumber(div(wei, fromString(\"10000000000\"))) / 100000000;\n\nconst fromEther = eth => mul(fromNumber(Math.floor(eth * 100000000)), fromString(\"10000000000\"));\n\nconst toString = a => toBN(a).toString(10);\n\nconst fromNumber = a => typeof a === \"string\" ? /^0x/.test(a) ? a : \"0x\" + a : \"0x\" + new BN(a).toString(\"hex\");\n\nconst toNumber = a => toBN(a).toNumber();\n\nconst toUint256 = a => Bytes.pad(32, a);\n\nconst bin = method => (a, b) => fromBN(toBN(a)[method](toBN(b)));\n\nconst add = bin(\"add\");\nconst mul = bin(\"mul\");\nconst div = bin(\"div\");\nconst sub = bin(\"sub\");\n\nmodule.exports = {\n toString,\n fromString,\n toNumber,\n fromNumber,\n toEther,\n fromEther,\n toUint256,\n add,\n mul,\n div,\n sub\n};","// The RLP format\n// Serialization and deserialization for the BytesTree type, under the following grammar:\n// | First byte | Meaning |\n// | ---------- | -------------------------------------------------------------------------- |\n// | 0 to 127 | HEX(leaf) |\n// | 128 to 183 | HEX(length_of_leaf + 128) + HEX(leaf) |\n// | 184 to 191 | HEX(length_of_length_of_leaf + 128 + 55) + HEX(length_of_leaf) + HEX(leaf) |\n// | 192 to 247 | HEX(length_of_node + 192) + HEX(node) |\n// | 248 to 255 | HEX(length_of_length_of_node + 128 + 55) + HEX(length_of_node) + HEX(node) |\n\nconst encode = tree => {\n const padEven = str => str.length % 2 === 0 ? str : \"0\" + str;\n\n const uint = num => padEven(num.toString(16));\n\n const length = (len, add) => len < 56 ? uint(add + len) : uint(add + uint(len).length / 2 + 55) + uint(len);\n\n const dataTree = tree => {\n if (typeof tree === \"string\") {\n const hex = tree.slice(2);\n const pre = hex.length != 2 || hex >= \"80\" ? length(hex.length / 2, 128) : \"\";\n return pre + hex;\n } else {\n const hex = tree.map(dataTree).join(\"\");\n const pre = length(hex.length / 2, 192);\n return pre + hex;\n }\n };\n\n return \"0x\" + dataTree(tree);\n};\n\nconst decode = hex => {\n let i = 2;\n\n const parseTree = () => {\n if (i >= hex.length) throw \"\";\n const head = hex.slice(i, i + 2);\n return head < \"80\" ? (i += 2, \"0x\" + head) : head < \"c0\" ? parseHex() : parseList();\n };\n\n const parseLength = () => {\n const len = parseInt(hex.slice(i, i += 2), 16) % 64;\n return len < 56 ? len : parseInt(hex.slice(i, i += (len - 55) * 2), 16);\n };\n\n const parseHex = () => {\n const len = parseLength();\n return \"0x\" + hex.slice(i, i += len * 2);\n };\n\n const parseList = () => {\n const lim = parseLength() * 2 + i;\n let list = [];\n while (i < lim) list.push(parseTree());\n return list;\n };\n\n try {\n return parseTree();\n } catch (e) {\n return [];\n }\n};\n\nmodule.exports = { encode, decode };","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","const extend = require('xtend')\nconst createRandomId = require('json-rpc-random-id')()\n\nmodule.exports = EthQuery\n\n\nfunction EthQuery(provider){\n const self = this\n self.currentProvider = provider\n}\n\n//\n// base queries\n//\n\n// default block\nEthQuery.prototype.getBalance = generateFnWithDefaultBlockFor(2, 'eth_getBalance')\nEthQuery.prototype.getCode = generateFnWithDefaultBlockFor(2, 'eth_getCode')\nEthQuery.prototype.getTransactionCount = generateFnWithDefaultBlockFor(2, 'eth_getTransactionCount')\nEthQuery.prototype.getStorageAt = generateFnWithDefaultBlockFor(3, 'eth_getStorageAt')\nEthQuery.prototype.call = generateFnWithDefaultBlockFor(2, 'eth_call')\n// standard\nEthQuery.prototype.protocolVersion = generateFnFor('eth_protocolVersion')\nEthQuery.prototype.syncing = generateFnFor('eth_syncing')\nEthQuery.prototype.coinbase = generateFnFor('eth_coinbase')\nEthQuery.prototype.mining = generateFnFor('eth_mining')\nEthQuery.prototype.hashrate = generateFnFor('eth_hashrate')\nEthQuery.prototype.gasPrice = generateFnFor('eth_gasPrice')\nEthQuery.prototype.accounts = generateFnFor('eth_accounts')\nEthQuery.prototype.blockNumber = generateFnFor('eth_blockNumber')\nEthQuery.prototype.getBlockTransactionCountByHash = generateFnFor('eth_getBlockTransactionCountByHash')\nEthQuery.prototype.getBlockTransactionCountByNumber = generateFnFor('eth_getBlockTransactionCountByNumber')\nEthQuery.prototype.getUncleCountByBlockHash = generateFnFor('eth_getUncleCountByBlockHash')\nEthQuery.prototype.getUncleCountByBlockNumber = generateFnFor('eth_getUncleCountByBlockNumber')\nEthQuery.prototype.sign = generateFnFor('eth_sign')\nEthQuery.prototype.sendTransaction = generateFnFor('eth_sendTransaction')\nEthQuery.prototype.sendRawTransaction = generateFnFor('eth_sendRawTransaction')\nEthQuery.prototype.estimateGas = generateFnFor('eth_estimateGas')\nEthQuery.prototype.getBlockByHash = generateFnFor('eth_getBlockByHash')\nEthQuery.prototype.getBlockByNumber = generateFnFor('eth_getBlockByNumber')\nEthQuery.prototype.getTransactionByHash = generateFnFor('eth_getTransactionByHash')\nEthQuery.prototype.getTransactionByBlockHashAndIndex = generateFnFor('eth_getTransactionByBlockHashAndIndex')\nEthQuery.prototype.getTransactionByBlockNumberAndIndex = generateFnFor('eth_getTransactionByBlockNumberAndIndex')\nEthQuery.prototype.getTransactionReceipt = generateFnFor('eth_getTransactionReceipt')\nEthQuery.prototype.getUncleByBlockHashAndIndex = generateFnFor('eth_getUncleByBlockHashAndIndex')\nEthQuery.prototype.getUncleByBlockNumberAndIndex = generateFnFor('eth_getUncleByBlockNumberAndIndex')\nEthQuery.prototype.getCompilers = generateFnFor('eth_getCompilers')\nEthQuery.prototype.compileLLL = generateFnFor('eth_compileLLL')\nEthQuery.prototype.compileSolidity = generateFnFor('eth_compileSolidity')\nEthQuery.prototype.compileSerpent = generateFnFor('eth_compileSerpent')\nEthQuery.prototype.newFilter = generateFnFor('eth_newFilter')\nEthQuery.prototype.newBlockFilter = generateFnFor('eth_newBlockFilter')\nEthQuery.prototype.newPendingTransactionFilter = generateFnFor('eth_newPendingTransactionFilter')\nEthQuery.prototype.uninstallFilter = generateFnFor('eth_uninstallFilter')\nEthQuery.prototype.getFilterChanges = generateFnFor('eth_getFilterChanges')\nEthQuery.prototype.getFilterLogs = generateFnFor('eth_getFilterLogs')\nEthQuery.prototype.getLogs = generateFnFor('eth_getLogs')\nEthQuery.prototype.getWork = generateFnFor('eth_getWork')\nEthQuery.prototype.submitWork = generateFnFor('eth_submitWork')\nEthQuery.prototype.submitHashrate = generateFnFor('eth_submitHashrate')\n\n// network level\n\nEthQuery.prototype.sendAsync = function(opts, cb){\n const self = this\n self.currentProvider.sendAsync(createPayload(opts), function(err, response){\n if (!err && response.error) err = new Error('EthQuery - RPC Error - '+response.error.message)\n if (err) return cb(err)\n cb(null, response.result)\n })\n}\n\n// util\n\nfunction generateFnFor(methodName){\n return function(){\n const self = this\n var args = [].slice.call(arguments)\n var cb = args.pop()\n self.sendAsync({\n method: methodName,\n params: args,\n }, cb)\n }\n}\n\nfunction generateFnWithDefaultBlockFor(argCount, methodName){\n return function(){\n const self = this\n var args = [].slice.call(arguments)\n var cb = args.pop()\n // set optional default block param\n if (args.length < argCount) args.push('latest')\n self.sendAsync({\n method: methodName,\n params: args,\n }, cb)\n }\n}\n\nfunction createPayload(data){\n return extend({\n // defaults\n id: createRandomId(),\n jsonrpc: '2.0',\n params: [],\n // user-specified\n }, data)\n}\n","const ethUtil = require('ethereumjs-util')\nconst ethAbi = require('ethereumjs-abi')\n\nmodule.exports = {\n\n concatSig: function (v, r, s) {\n const rSig = ethUtil.fromSigned(r)\n const sSig = ethUtil.fromSigned(s)\n const vSig = ethUtil.bufferToInt(v)\n const rStr = padWithZeroes(ethUtil.toUnsigned(rSig).toString('hex'), 64)\n const sStr = padWithZeroes(ethUtil.toUnsigned(sSig).toString('hex'), 64)\n const vStr = ethUtil.stripHexPrefix(ethUtil.intToHex(vSig))\n return ethUtil.addHexPrefix(rStr.concat(sStr, vStr)).toString('hex')\n },\n\n normalize: function (input) {\n if (!input) return\n\n if (typeof input === 'number') {\n const buffer = ethUtil.toBuffer(input)\n input = ethUtil.bufferToHex(buffer)\n }\n\n if (typeof input !== 'string') {\n var msg = 'eth-sig-util.normalize() requires hex string or integer input.'\n msg += ' received ' + (typeof input) + ': ' + input\n throw new Error(msg)\n }\n\n return ethUtil.addHexPrefix(input.toLowerCase())\n },\n\n personalSign: function (privateKey, msgParams) {\n var message = ethUtil.toBuffer(msgParams.data)\n var msgHash = ethUtil.hashPersonalMessage(message)\n var sig = ethUtil.ecsign(msgHash, privateKey)\n var serialized = ethUtil.bufferToHex(this.concatSig(sig.v, sig.r, sig.s))\n return serialized\n },\n\n recoverPersonalSignature: function (msgParams) {\n const publicKey = getPublicKeyFor(msgParams)\n const sender = ethUtil.publicToAddress(publicKey)\n const senderHex = ethUtil.bufferToHex(sender)\n return senderHex\n },\n\n extractPublicKey: function (msgParams) {\n const publicKey = getPublicKeyFor(msgParams)\n return '0x' + publicKey.toString('hex')\n },\n\n typedSignatureHash: function (typedData) {\n const hashBuffer = typedSignatureHash(typedData)\n return ethUtil.bufferToHex(hashBuffer)\n },\n\n signTypedData: function (privateKey, msgParams) {\n const msgHash = typedSignatureHash(msgParams.data)\n const sig = ethUtil.ecsign(msgHash, privateKey)\n return ethUtil.bufferToHex(this.concatSig(sig.v, sig.r, sig.s))\n },\n\n recoverTypedSignature: function (msgParams) {\n const msgHash = typedSignatureHash(msgParams.data)\n const publicKey = recoverPublicKey(msgHash, msgParams.sig)\n const sender = ethUtil.publicToAddress(publicKey)\n return ethUtil.bufferToHex(sender)\n }\n\n}\n\n/**\n * @param typedData - Array of data along with types, as per EIP712.\n * @returns Buffer\n */\nfunction typedSignatureHash(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' ? ethUtil.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 ethAbi.soliditySHA3(\n ['bytes32', 'bytes32'],\n [\n ethAbi.soliditySHA3(new Array(typedData.length).fill('string'), schema),\n ethAbi.soliditySHA3(types, data)\n ]\n )\n}\n\nfunction recoverPublicKey(hash, sig) {\n const signature = ethUtil.toBuffer(sig)\n const sigParams = ethUtil.fromRpcSig(signature)\n return ethUtil.ecrecover(hash, sigParams.v, sigParams.r, sigParams.s)\n}\n\nfunction getPublicKeyFor (msgParams) {\n const message = ethUtil.toBuffer(msgParams.data)\n const msgHash = ethUtil.hashPersonalMessage(message)\n return recoverPublicKey(msgHash, msgParams.sig)\n}\n\n\nfunction padWithZeroes (number, length) {\n var myString = '' + number\n while (myString.length < length) {\n myString = '0' + myString\n }\n return myString\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Returns true if the bloom is a valid bloom\r\n * @param bloom The bloom\r\n */\r\nfunction isBloom(bloom) {\r\n if (typeof bloom !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{512}$/i.test(bloom)) {\r\n return false;\r\n }\r\n if (/^(0x)?[0-9a-f]{512}$/.test(bloom) ||\r\n /^(0x)?[0-9A-F]{512}$/.test(bloom)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isBloom = isBloom;\r\n/**\r\n * Returns true if the value is part of the given bloom\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param value The value\r\n */\r\nfunction isInBloom(bloom, value) {\r\n if (typeof value === 'object' && value.constructor === Uint8Array) {\r\n value = utils_1.bytesToHex(value);\r\n }\r\n const hash = utils_1.keccak256(value).replace('0x', '');\r\n for (let i = 0; i < 12; i += 4) {\r\n // calculate bit position in bloom filter that must be active\r\n const bitpos = ((parseInt(hash.substr(i, 2), 16) << 8) +\r\n parseInt(hash.substr(i + 2, 2), 16)) &\r\n 2047;\r\n // test if bitpos in bloom is active\r\n const code = codePointToInt(bloom.charCodeAt(bloom.length - 1 - Math.floor(bitpos / 4)));\r\n const offset = 1 << bitpos % 4;\r\n if ((code & offset) !== offset) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.isInBloom = isInBloom;\r\n/**\r\n * Code points to int\r\n * @param codePoint The code point\r\n */\r\nfunction codePointToInt(codePoint) {\r\n if (codePoint >= 48 && codePoint <= 57) {\r\n /* ['0'..'9'] -> [0..9] */\r\n return codePoint - 48;\r\n }\r\n if (codePoint >= 65 && codePoint <= 70) {\r\n /* ['A'..'F'] -> [10..15] */\r\n return codePoint - 55;\r\n }\r\n if (codePoint >= 97 && codePoint <= 102) {\r\n /* ['a'..'f'] -> [10..15] */\r\n return codePoint - 87;\r\n }\r\n throw new Error('invalid bloom');\r\n}\r\n/**\r\n * Returns true if the ethereum users address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param address the address to test\r\n */\r\nfunction isUserEthereumAddressInBloom(bloom, ethereumAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(ethereumAddress)) {\r\n throw new Error(`Invalid ethereum address given: \"${ethereumAddress}\"`);\r\n }\r\n // you have to pad the ethereum address to 32 bytes\r\n // else the bloom filter does not work\r\n // this is only if your matching the USERS\r\n // ethereum address. Contract address do not need this\r\n // hence why we have 2 methods\r\n // (0x is not in the 2nd parameter of padleft so 64 chars is fine)\r\n const address = utils_1.padLeft(ethereumAddress, 64);\r\n return isInBloom(bloom, address);\r\n}\r\nexports.isUserEthereumAddressInBloom = isUserEthereumAddressInBloom;\r\n/**\r\n * Returns true if the contract address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param contractAddress the contract address to test\r\n */\r\nfunction isContractAddressInBloom(bloom, contractAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(contractAddress)) {\r\n throw new Error(`Invalid contract address given: \"${contractAddress}\"`);\r\n }\r\n return isInBloom(bloom, contractAddress);\r\n}\r\nexports.isContractAddressInBloom = isContractAddressInBloom;\r\n/**\r\n * Returns true if the topic is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param topic the topic encoded hex\r\n */\r\nfunction isTopicInBloom(bloom, topic) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isTopic(topic)) {\r\n throw new Error('Invalid topic');\r\n }\r\n return isInBloom(bloom, topic);\r\n}\r\nexports.isTopicInBloom = isTopicInBloom;\r\n/**\r\n * Checks if its a valid topic\r\n * @param topic encoded hex topic\r\n */\r\nfunction isTopic(topic) {\r\n if (typeof topic !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{64}$/i.test(topic)) {\r\n return false;\r\n }\r\n else if (/^(0x)?[0-9a-f]{64}$/.test(topic) ||\r\n /^(0x)?[0-9A-F]{64}$/.test(topic)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isTopic = isTopic;\r\n/**\r\n * Is valid address\r\n * @param address The address\r\n */\r\nfunction isAddress(address) {\r\n if (typeof address !== 'string') {\r\n return false;\r\n }\r\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\r\n return true;\r\n }\r\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isAddress = isAddress;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sha3 = require(\"js-sha3\");\r\n/**\r\n * Keccak256 hash\r\n * @param data The data\r\n */\r\nfunction keccak256(data) {\r\n return '0x' + sha3.keccak_256(toByteArray(data));\r\n}\r\nexports.keccak256 = keccak256;\r\n/**\r\n * Adding padding to string on the left\r\n * @param value The value\r\n * @param chars The chars\r\n */\r\nexports.padLeft = (value, chars) => {\r\n const hasPrefix = /^0x/i.test(value) || typeof value === 'number';\r\n value = value.toString().replace(/^0x/i, '');\r\n const padding = chars - value.length + 1 >= 0 ? chars - value.length + 1 : 0;\r\n return (hasPrefix ? '0x' : '') + new Array(padding).join('0') + value;\r\n};\r\n/**\r\n * Convert bytes to hex\r\n * @param bytes The bytes\r\n */\r\nfunction bytesToHex(bytes) {\r\n const hex = [];\r\n for (let i = 0; i < bytes.length; i++) {\r\n hex.push((bytes[i] >>> 4).toString(16));\r\n hex.push((bytes[i] & 0xf).toString(16));\r\n }\r\n return `0x${hex.join('').replace(/^0+/, '')}`;\r\n}\r\nexports.bytesToHex = bytesToHex;\r\n/**\r\n * To byte array\r\n * @param value The value\r\n */\r\nfunction toByteArray(value) {\r\n if (value == null) {\r\n throw new Error('cannot convert null value to array');\r\n }\r\n if (typeof value === 'string') {\r\n const match = value.match(/^(0x)?[0-9a-fA-F]*$/);\r\n if (!match) {\r\n throw new Error('invalid hexidecimal string');\r\n }\r\n if (match[1] !== '0x') {\r\n throw new Error('hex string must have 0x prefix');\r\n }\r\n value = value.substring(2);\r\n if (value.length % 2) {\r\n value = '0' + value;\r\n }\r\n const result = [];\r\n for (let i = 0; i < value.length; i += 2) {\r\n result.push(parseInt(value.substr(i, 2), 16));\r\n }\r\n return addSlice(new Uint8Array(result));\r\n }\r\n if (isByteArray(value)) {\r\n return addSlice(new Uint8Array(value));\r\n }\r\n throw new Error('invalid arrayify value');\r\n}\r\nexports.toByteArray = toByteArray;\r\n/**\r\n * Is byte array\r\n * @param value The value\r\n */\r\nfunction isByteArray(value) {\r\n if (!value ||\r\n // tslint:disable-next-line: radix\r\n parseInt(String(value.length)) != value.length ||\r\n typeof value === 'string') {\r\n return false;\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n const v = value[i];\r\n // tslint:disable-next-line: radix\r\n if (v < 0 || v >= 256 || parseInt(String(v)) != v) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Add slice to array\r\n * @param array The array\r\n */\r\nfunction addSlice(array) {\r\n if (array.slice !== undefined) {\r\n return array;\r\n }\r\n array.slice = () => {\r\n const args = Array.prototype.slice.call(arguments);\r\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\r\n };\r\n return array;\r\n}\r\n","import { Hash } from \"crypto\";\n\nexport function createHashFunction(\n hashConstructor: () => Hash\n): (msg: Buffer) => Buffer {\n return msg => {\n const hash = hashConstructor();\n hash.update(msg);\n return Buffer.from(hash.digest());\n };\n}\n","import { createHashFunction } from \"./hash-utils\";\n\nconst createKeccakHash = require(\"keccak\");\n\nexport const keccak224 = createHashFunction(() =>\n createKeccakHash(\"keccak224\")\n);\n\nexport const keccak256 = createHashFunction(() =>\n createKeccakHash(\"keccak256\")\n);\n\nexport const keccak384 = createHashFunction(() =>\n createKeccakHash(\"keccak384\")\n);\n\nexport const keccak512 = createHashFunction(() =>\n createKeccakHash(\"keccak512\")\n);\n","const randombytes = require(\"randombytes\");\n\nexport function getRandomBytes(bytes: number): Promise {\n return new Promise((resolve, reject) => {\n randombytes(bytes, function(err: any, resp: Buffer) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(resp);\n });\n });\n}\n\nexport function getRandomBytesSync(bytes: number): Buffer {\n return randombytes(bytes);\n}\n","import { privateKeyVerify } from \"secp256k1\";\nimport { getRandomBytes, getRandomBytesSync } from \"./random\";\n\nconst SECP256K1_PRIVATE_KEY_SIZE = 32;\n\nexport async function createPrivateKey(): Promise {\n while (true) {\n const pk = await getRandomBytes(SECP256K1_PRIVATE_KEY_SIZE);\n if (privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\n\nexport function createPrivateKeySync(): Uint8Array {\n while (true) {\n const pk = getRandomBytesSync(SECP256K1_PRIVATE_KEY_SIZE);\n if (privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\n\nexport * from \"secp256k1\";\n","module.exports = require('./lib/index.js')\n","/* eslint-disable no-useless-escape */\nconst utils = require('ethereumjs-util')\nconst BN = require('bn.js')\n\nvar ABI = function () {\n}\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\nABI.eventID = function (name, types) {\n // FIXME: use node.js util.format?\n var sig = name + '(' + types.map(elementaryName).join(',') + ')'\n return utils.keccak256(Buffer.from(sig))\n}\n\nABI.methodID = function (name, types) {\n return ABI.eventID(name, types).slice(0, 4)\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 (utils.isHexPrefixed(arg)) {\n return new BN(utils.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// someMethod(bytes,uint)\n// someMethod(bytes,uint):(boolean)\nfunction parseSignature (sig) {\n var tmp = /^(\\w+)\\((.*)\\)$/.exec(sig)\n\n if (tmp.length !== 3) {\n throw new Error('Invalid method signature')\n }\n\n var args = /^(.+)\\):\\((.+)$/.exec(tmp[2])\n\n if (args !== null && args.length === 3) {\n return {\n method: tmp[1],\n args: args[1].split(','),\n retargs: args[2].split(',')\n }\n } else {\n var params = tmp[2].split(',')\n if (params.length === 1 && params[0] === '') {\n // Special-case (possibly naive) fixup for functions that take no arguments.\n // TODO: special cases are always bad, but this makes the function return\n // match what the calling functions expect\n params = []\n }\n return {\n method: tmp[1],\n args: params\n }\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', Buffer.from(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 = Buffer.from(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, utils.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 utils.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// Decodes a single item (can be dynamic array)\n// @returns: array\n// FIXME: this method will need a lot of attention at checking limits and validation\nfunction decodeSingle (parsedType, data, offset) {\n if (typeof parsedType === 'string') {\n parsedType = parseType(parsedType)\n }\n var size, num, ret, i\n\n if (parsedType.name === 'address') {\n return decodeSingle(parsedType.rawType, data, offset).toArrayLike(Buffer, 'be', 20).toString('hex')\n } else if (parsedType.name === 'bool') {\n return decodeSingle(parsedType.rawType, data, offset).toString() === new BN(1).toString()\n } else if (parsedType.name === 'string') {\n var bytes = decodeSingle(parsedType.rawType, data, offset)\n return Buffer.from(bytes, 'utf8').toString()\n } else if (parsedType.isArray) {\n // this part handles fixed-length arrays ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n ret = []\n size = parsedType.size\n\n if (parsedType.size === 'dynamic') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n offset = offset + 32\n }\n for (i = 0; i < size; i++) {\n var decoded = decodeSingle(parsedType.subArray, data, offset)\n ret.push(decoded)\n offset += parsedType.subArray.memoryUsage\n }\n return ret\n } else if (parsedType.name === 'bytes') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n return data.slice(offset + 32, offset + 32 + size)\n } else if (parsedType.name.startsWith('bytes')) {\n return data.slice(offset, offset + parsedType.size)\n } else if (parsedType.name.startsWith('uint')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be')\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded int exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n return num\n } else if (parsedType.name.startsWith('int')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be').fromTwos(256)\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded uint exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n\n return num\n } else if (parsedType.name.startsWith('ufixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('uint256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n } else if (parsedType.name.startsWith('fixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('int256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n }\n throw new Error('Unsupported or invalid type: ' + parsedType.name)\n}\n\n// Parse the given type\n// @returns: {} containing the type itself, memory usage and (including size and subArray if applicable)\nfunction parseType (type) {\n var size\n var ret\n if (isArray(type)) {\n size = parseTypeArray(type)\n var subArray = type.slice(0, type.lastIndexOf('['))\n subArray = parseType(subArray)\n ret = {\n isArray: true,\n name: type,\n size: size,\n memoryUsage: size === 'dynamic' ? 32 : subArray.memoryUsage * size,\n subArray: subArray\n }\n return ret\n } else {\n var rawType\n switch (type) {\n case 'address':\n rawType = 'uint160'\n break\n case 'bool':\n rawType = 'uint8'\n break\n case 'string':\n rawType = 'bytes'\n break\n }\n ret = {\n rawType: rawType,\n name: type,\n memoryUsage: 32\n }\n\n if ((type.startsWith('bytes') && type !== 'bytes') || type.startsWith('uint') || type.startsWith('int')) {\n ret.size = parseTypeN(type)\n } else if (type.startsWith('ufixed') || type.startsWith('fixed')) {\n ret.size = parseTypeNxM(type)\n }\n\n if (type.startsWith('bytes') && type !== 'bytes' && (ret.size < 1 || ret.size > 32)) {\n throw new Error('Invalid bytes width: ' + ret.size)\n }\n if ((type.startsWith('uint') || type.startsWith('int')) && (ret.size % 8 || ret.size < 8 || ret.size > 256)) {\n throw new Error('Invalid int/uint width: ' + ret.size)\n }\n return ret\n }\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\nABI.rawEncode = function (types, values) {\n var output = []\n var data = []\n\n var headLength = 0\n\n types.forEach(function (type) {\n if (isArray(type)) {\n var size = parseTypeArray(type)\n\n if (size !== 'dynamic') {\n headLength += 32 * size\n } else {\n headLength += 32\n }\n } else {\n headLength += 32\n }\n })\n\n for (var i = 0; i < types.length; i++) {\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\nABI.rawDecode = function (types, data) {\n var ret = []\n data = Buffer.from(data)\n var offset = 0\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var parsed = parseType(type, data, offset)\n var decoded = decodeSingle(parsed, data, offset)\n offset += parsed.memoryUsage\n ret.push(decoded)\n }\n return ret\n}\n\nABI.simpleEncode = function (method) {\n var args = Array.prototype.slice.call(arguments).slice(1)\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (args.length !== sig.args.length) {\n throw new Error('Argument count mismatch')\n }\n\n return Buffer.concat([ ABI.methodID(sig.method, sig.args), ABI.rawEncode(sig.args, args) ])\n}\n\nABI.simpleDecode = function (method, data) {\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (!sig.retargs) {\n throw new Error('No return values in method')\n }\n\n return ABI.rawDecode(sig.retargs, data)\n}\n\nfunction stringify (type, value) {\n if (type.startsWith('address') || type.startsWith('bytes')) {\n return '0x' + value.toString('hex')\n } else {\n return value.toString()\n }\n}\n\nABI.stringify = function (types, values) {\n var ret = []\n\n for (var i in types) {\n var type = types[i]\n var value = values[i]\n\n // if it is an array type, concat the items\n if (/^[^\\[]+\\[.*\\]$/.test(type)) {\n value = value.map(function (item) {\n return stringify(type, item)\n }).join(', ')\n } else {\n value = stringify(type, value)\n }\n\n ret.push(value)\n }\n\n return ret\n}\n\nABI.solidityHexValue = function (type, value, bitsize) {\n // pass in bitsize = null if use default bitsize\n var size, num\n if (isArray(type)) {\n var subType = type.replace(/\\[.*?\\]/, '')\n if (!isArray(subType)) {\n var arraySize = parseTypeArray(type)\n if (arraySize !== 'dynamic' && arraySize !== 0 && value.length > arraySize) {\n throw new Error('Elements exceed array size: ' + arraySize)\n }\n }\n var arrayValues = value.map(function (v) {\n return ABI.solidityHexValue(subType, v, 256)\n })\n return Buffer.concat(arrayValues)\n } else if (type === 'bytes') {\n return value\n } else if (type === 'string') {\n return Buffer.from(value, 'utf8')\n } else if (type === 'bool') {\n bitsize = bitsize || 8\n var padding = Array((bitsize) / 4).join('0')\n return Buffer.from(value ? padding + '1' : padding + '0', 'hex')\n } else if (type === 'address') {\n var bytesize = 20\n if (bitsize) {\n bytesize = bitsize / 8\n }\n return utils.setLengthLeft(value, bytesize)\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 utils.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 bitsize = bitsize || size\n return num.toArrayLike(Buffer, 'be', bitsize / 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 bitsize = bitsize || size\n return num.toTwos(size).toArrayLike(Buffer, 'be', bitsize / 8)\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n}\n\nABI.solidityPack = function (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\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 ret.push(ABI.solidityHexValue(type, value, null))\n }\n\n return Buffer.concat(ret)\n}\n\nABI.soliditySHA3 = function (types, values) {\n return utils.keccak256(ABI.solidityPack(types, values))\n}\n\nABI.soliditySHA256 = function (types, values) {\n return utils.sha256(ABI.solidityPack(types, values))\n}\n\nABI.solidityRIPEMD160 = function (types, values) {\n return utils.ripemd160(ABI.solidityPack(types, values), true)\n}\n\n// Serpent's users are familiar with this encoding\n// - s: string\n// - b: bytes\n// - b: bytes\n// - i: int256\n// - a: int256[]\n\nfunction isNumeric (c) {\n // FIXME: is this correct? Seems to work\n return (c >= '0') && (c <= '9')\n}\n\n// For a \"documentation\" refer to https://github.com/ethereum/serpent/blob/develop/preprocess.cpp\nABI.fromSerpent = function (sig) {\n var ret = []\n for (var i = 0; i < sig.length; i++) {\n var type = sig[i]\n if (type === 's') {\n ret.push('bytes')\n } else if (type === 'b') {\n var tmp = 'bytes'\n var j = i + 1\n while ((j < sig.length) && isNumeric(sig[j])) {\n tmp += sig[j] - '0'\n j++\n }\n i = j - 1\n ret.push(tmp)\n } else if (type === 'i') {\n ret.push('int256')\n } else if (type === 'a') {\n ret.push('int256[]')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret\n}\n\nABI.toSerpent = function (types) {\n var ret = []\n for (var i = 0; i < types.length; i++) {\n var type = types[i]\n if (type === 'bytes') {\n ret.push('s')\n } else if (type.startsWith('bytes')) {\n ret.push('b' + parseTypeN(type))\n } else if (type === 'int256') {\n ret.push('i')\n } else if (type === 'int256[]') {\n ret.push('a')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret.join('')\n}\n\nmodule.exports = ABI\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n",null,null,null,null,null,null,null,null,null,"'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ethUtil = require('ethereumjs-util');\nvar fees = require('ethereum-common/params.json');\nvar BN = ethUtil.BN;\n\n// secp256k1n/2\nvar N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n\n/**\n * Creates a new transaction object.\n *\n * @example\n * var rawTx = {\n * nonce: '00',\n * gasPrice: '09184e72a000',\n * gasLimit: '2710',\n * to: '0000000000000000000000000000000000000000',\n * value: '00',\n * data: '7f7465737432000000000000000000000000000000000000000000000000000000600057',\n * v: '1c',\n * r: '5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab',\n * s: '5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13'\n * };\n * var tx = new Transaction(rawTx);\n *\n * @class\n * @param {Buffer | Array | Object} data a transaction can be initiailized with either a buffer containing the RLP serialized transaction or an array of buffers relating to each of the tx Properties, listed in order below in the exmple.\n *\n * Or lastly an Object containing the Properties of the transaction like in the Usage example.\n *\n * For Object and Arrays each of the elements can either be a Buffer, a hex-prefixed (0x) String , Number, or an object with a toBuffer method such as Bignum\n *\n * @property {Buffer} raw The raw rlp encoded transaction\n * @param {Buffer} data.nonce nonce number\n * @param {Buffer} data.gasLimit transaction gas limit\n * @param {Buffer} data.gasPrice transaction gas price\n * @param {Buffer} data.to to the to address\n * @param {Buffer} data.value the amount of ether sent\n * @param {Buffer} data.data this will contain the data of the message or the init of a contract\n * @param {Buffer} data.v EC signature parameter\n * @param {Buffer} data.r EC signature parameter\n * @param {Buffer} data.s EC recovery ID\n * @param {Number} data.chainId EIP 155 chainId - mainnet: 1, ropsten: 3\n * */\n\nvar Transaction = function () {\n function Transaction(data) {\n _classCallCheck(this, Transaction);\n\n data = data || {};\n // Define Properties\n var fields = [{\n name: 'nonce',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'gasPrice',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'gasLimit',\n alias: 'gas',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'to',\n allowZero: true,\n length: 20,\n default: new Buffer([])\n }, {\n name: 'value',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'data',\n alias: 'input',\n allowZero: true,\n default: new Buffer([])\n }, {\n name: 'v',\n allowZero: true,\n default: new Buffer([0x1c])\n }, {\n name: 'r',\n length: 32,\n allowZero: true,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 's',\n length: 32,\n allowZero: true,\n allowLess: true,\n default: new Buffer([])\n }];\n\n /**\n * Returns the rlp encoding of the transaction\n * @method serialize\n * @return {Buffer}\n * @memberof Transaction\n * @name serialize\n */\n // attached serialize\n ethUtil.defineProperties(this, fields, data);\n\n /**\n * @property {Buffer} from (read only) sender address of this transaction, mathematically derived from other parameters.\n * @name from\n * @memberof Transaction\n */\n Object.defineProperty(this, 'from', {\n enumerable: true,\n configurable: true,\n get: this.getSenderAddress.bind(this)\n });\n\n // calculate chainId from signature\n var sigV = ethUtil.bufferToInt(this.v);\n var chainId = Math.floor((sigV - 35) / 2);\n if (chainId < 0) chainId = 0;\n\n // set chainId\n this._chainId = chainId || data.chainId || 0;\n this._homestead = true;\n }\n\n /**\n * If the tx's `to` is to the creation address\n * @return {Boolean}\n */\n\n\n Transaction.prototype.toCreationAddress = function toCreationAddress() {\n return this.to.toString('hex') === '';\n };\n\n /**\n * Computes a sha3-256 hash of the serialized tx\n * @param {Boolean} [includeSignature=true] whether or not to inculde the signature\n * @return {Buffer}\n */\n\n\n Transaction.prototype.hash = function hash(includeSignature) {\n if (includeSignature === undefined) includeSignature = true;\n\n // EIP155 spec:\n // when computing the hash of a transaction for purposes of signing or recovering,\n // instead of hashing only the first six elements (ie. nonce, gasprice, startgas, to, value, data),\n // hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0\n\n var items = void 0;\n if (includeSignature) {\n items = this.raw;\n } else {\n if (this._chainId > 0) {\n var raw = this.raw.slice();\n this.v = this._chainId;\n this.r = 0;\n this.s = 0;\n items = this.raw;\n this.raw = raw;\n } else {\n items = this.raw.slice(0, 6);\n }\n }\n\n // create hash\n return ethUtil.rlphash(items);\n };\n\n /**\n * returns the public key of the sender\n * @return {Buffer}\n */\n\n\n Transaction.prototype.getChainId = function getChainId() {\n return this._chainId;\n };\n\n /**\n * returns the sender's address\n * @return {Buffer}\n */\n\n\n Transaction.prototype.getSenderAddress = function getSenderAddress() {\n if (this._from) {\n return this._from;\n }\n var pubkey = this.getSenderPublicKey();\n this._from = ethUtil.publicToAddress(pubkey);\n return this._from;\n };\n\n /**\n * returns the public key of the sender\n * @return {Buffer}\n */\n\n\n Transaction.prototype.getSenderPublicKey = function getSenderPublicKey() {\n if (!this._senderPubKey || !this._senderPubKey.length) {\n if (!this.verifySignature()) throw new Error('Invalid Signature');\n }\n return this._senderPubKey;\n };\n\n /**\n * Determines if the signature is valid\n * @return {Boolean}\n */\n\n\n Transaction.prototype.verifySignature = function verifySignature() {\n var msgHash = this.hash(false);\n // All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n if (this._homestead && new BN(this.s).cmp(N_DIV_2) === 1) {\n return false;\n }\n\n try {\n var v = ethUtil.bufferToInt(this.v);\n if (this._chainId > 0) {\n v -= this._chainId * 2 + 8;\n }\n this._senderPubKey = ethUtil.ecrecover(msgHash, v, this.r, this.s);\n } catch (e) {\n return false;\n }\n\n return !!this._senderPubKey;\n };\n\n /**\n * sign a transaction with a given a private key\n * @param {Buffer} privateKey\n */\n\n\n Transaction.prototype.sign = function sign(privateKey) {\n var msgHash = this.hash(false);\n var sig = ethUtil.ecsign(msgHash, privateKey);\n if (this._chainId > 0) {\n sig.v += this._chainId * 2 + 8;\n }\n Object.assign(this, sig);\n };\n\n /**\n * The amount of gas paid for the data in this tx\n * @return {BN}\n */\n\n\n Transaction.prototype.getDataFee = function getDataFee() {\n var data = this.raw[5];\n var cost = new BN(0);\n for (var i = 0; i < data.length; i++) {\n data[i] === 0 ? cost.iaddn(fees.txDataZeroGas.v) : cost.iaddn(fees.txDataNonZeroGas.v);\n }\n return cost;\n };\n\n /**\n * the minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n * @return {BN}\n */\n\n\n Transaction.prototype.getBaseFee = function getBaseFee() {\n var fee = this.getDataFee().iaddn(fees.txGas.v);\n if (this._homestead && this.toCreationAddress()) {\n fee.iaddn(fees.txCreation.v);\n }\n return fee;\n };\n\n /**\n * the up front amount that an account must have for this transaction to be valid\n * @return {BN}\n */\n\n\n Transaction.prototype.getUpfrontCost = function getUpfrontCost() {\n return new BN(this.gasLimit).imul(new BN(this.gasPrice)).iadd(new BN(this.value));\n };\n\n /**\n * validates the signature and checks to see if it has enough gas\n * @param {Boolean} [stringError=false] whether to return a string with a dscription of why the validation failed or return a Bloolean\n * @return {Boolean|String}\n */\n\n\n Transaction.prototype.validate = function validate(stringError) {\n var errors = [];\n if (!this.verifySignature()) {\n errors.push('Invalid Signature');\n }\n\n if (this.getBaseFee().cmp(new BN(this.gasLimit)) > 0) {\n errors.push(['gas limit is too low. Need at least ' + this.getBaseFee()]);\n }\n\n if (stringError === undefined || stringError === false) {\n return errors.length === 0;\n } else {\n return errors.join(' ');\n }\n };\n\n return Transaction;\n}();\n\nmodule.exports = Transaction;","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = require('ethereum-cryptography/keccak'),\n keccak224 = _require.keccak224,\n keccak384 = _require.keccak384,\n k256 = _require.keccak256,\n keccak512 = _require.keccak512;\n\nvar secp256k1 = require('./secp256k1-adapter');\nvar assert = require('assert');\nvar rlp = require('rlp');\nvar BN = require('bn.js');\nvar createHash = require('create-hash');\nvar Buffer = require('safe-buffer').Buffer;\nObject.assign(exports, require('ethjs-util'));\n\n/**\n * the max integer that this VM can handle (a ```BN```)\n * @var {BN} MAX_INTEGER\n */\nexports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n\n/**\n * 2^256 (a ```BN```)\n * @var {BN} TWO_POW256\n */\nexports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16);\n\n/**\n * Keccak-256 hash of null (a ```String```)\n * @var {String} KECCAK256_NULL_S\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\nexports.SHA3_NULL_S = exports.KECCAK256_NULL_S;\n\n/**\n * Keccak-256 hash of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_NULL\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\nexports.SHA3_NULL = exports.KECCAK256_NULL;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```String```)\n * @var {String} KECCAK256_RLP_ARRAY_S\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\nexports.SHA3_RLP_ARRAY_S = exports.KECCAK256_RLP_ARRAY_S;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP_ARRAY\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\nexports.SHA3_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```String```)\n * @var {String} KECCAK256_RLP_S\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\nexports.SHA3_RLP_S = exports.KECCAK256_RLP_S;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\nexports.SHA3_RLP = exports.KECCAK256_RLP;\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n * @var {Function}\n */\nexports.BN = BN;\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n * @var {Function}\n */\nexports.rlp = rlp;\n\n/**\n * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)\n * @var {Object}\n */\nexports.secp256k1 = secp256k1;\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 */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n\n/**\n * Returns a zero address\n * @method zeroAddress\n * @return {String}\n */\nexports.zeroAddress = function () {\n var addressLength = 20;\n var zeroAddress = exports.zeros(addressLength);\n return exports.bufferToHex(zeroAddress);\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 lsetLength\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 */\nexports.setLengthLeft = exports.setLength = function (msg, length, right) {\n var buf = exports.zeros(length);\n msg = exports.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 */\nexports.setLengthRight = function (msg, length) {\n return exports.setLength(msg, length, true);\n};\n\n/**\n * Trims leading zeros from a `Buffer` or an `Array`\n * @param {Buffer|Array|String} a\n * @return {Buffer|Array|String}\n */\nexports.unpad = exports.stripZeros = function (a) {\n a = exports.stripHexPrefix(a);\n var first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\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 */\nexports.toBuffer = function (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v);\n } else if (typeof v === 'string') {\n if (exports.isHexString(v)) {\n v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex');\n } else {\n v = Buffer.from(v);\n }\n } else if (typeof v === 'number') {\n v = exports.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` to a `Number`\n * @param {Buffer} buf\n * @return {Number}\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new BN(exports.toBuffer(buf)).toNumber();\n};\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param {Buffer} num\n * @return {BN}\n */\nexports.fromSigned = function (num) {\n return new BN(num).fromTwos(256);\n};\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param {BN} num\n * @return {Buffer}\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\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 */\nexports.keccak = function (a, bits) {\n a = exports.toBuffer(a);\n if (!bits) bits = 256;\n\n switch (bits) {\n case 224:\n {\n return keccak224(a);\n }\n case 256:\n {\n return k256(a);\n }\n case 384:\n {\n return keccak384(a);\n }\n case 512:\n {\n return keccak512(a);\n }\n default:\n {\n throw new Error('Invald algorithm: keccak' + bits);\n }\n }\n};\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256)\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n\n/**\n * Creates SHA-3 (Keccak) hash of the input [OBSOLETE]\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the SHA-3 width\n * @return {Buffer}\n */\nexports.sha3 = exports.keccak;\n\n/**\n * Creates SHA256 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.sha256 = function (a) {\n a = exports.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n\n/**\n * Creates RIPEMD160 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Boolean} padded whether it should be padded to 256 bits or not\n * @return {Buffer}\n */\nexports.ripemd160 = function (a, padded) {\n a = exports.toBuffer(a);\n var hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return exports.setLength(hash, 32);\n } else {\n return hash;\n }\n};\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n * @param {Buffer} privateKey\n * @return {Boolean}\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1.privateKeyVerify(privateKey);\n};\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Boolean}\n */\nexports.isValidPublic = function (publicKey, sanitize) {\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n\n if (!sanitize) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(publicKey);\n};\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Buffer}\n */\nexports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {\n pubKey = exports.toBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1);\n }\n assert(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return exports.keccak(pubKey).slice(-20);\n};\n\n/**\n * Returns the ethereum public key of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nvar privateToPublic = exports.privateToPublic = function (privateKey) {\n privateKey = exports.toBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.publicKeyCreate(privateKey, false).slice(1);\n};\n\n/**\n * Converts a public key to the Ethereum format.\n * @param {Buffer} publicKey\n * @return {Buffer}\n */\nexports.importPublic = function (publicKey) {\n publicKey = exports.toBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1);\n }\n return publicKey;\n};\n\n/**\n * ECDSA sign\n * @param {Buffer} msgHash\n * @param {Buffer} privateKey\n * @return {Object}\n */\nexports.ecsign = function (msgHash, privateKey) {\n var sig = secp256k1.sign(msgHash, privateKey);\n\n var ret = {};\n ret.r = sig.signature.slice(0, 32);\n ret.s = sig.signature.slice(32, 64);\n ret.v = sig.recovery + 27;\n return ret;\n};\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n * @param message\n * @returns {Buffer} hash\n */\nexports.hashPersonalMessage = function (message) {\n var prefix = exports.toBuffer('\\x19Ethereum Signed Message:\\n' + message.length.toString());\n return exports.keccak(Buffer.concat([prefix, message]));\n};\n\n/**\n * ECDSA public key recovery from signature\n * @param {Buffer} msgHash\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {Buffer} publicKey\n */\nexports.ecrecover = function (msgHash, v, r, s) {\n var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64);\n var recovery = v - 27;\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Invalid signature v value');\n }\n var senderPubKey = secp256k1.recover(msgHash, signature, recovery);\n return secp256k1.publicKeyConvert(senderPubKey, false).slice(1);\n};\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {String} sig\n */\nexports.toRpcSig = function (v, r, s) {\n // NOTE: with potential introduction of chainId this might need to be updated\n if (v !== 27 && v !== 28) {\n throw new Error('Invalid recovery id');\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053\n return exports.bufferToHex(Buffer.concat([exports.setLengthLeft(r, 32), exports.setLengthLeft(s, 32), exports.toBuffer(v - 27)]));\n};\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * @param {String} sig\n * @return {Object}\n */\nexports.fromRpcSig = function (sig) {\n sig = exports.toBuffer(sig);\n\n // NOTE: with potential introduction of chainId this might need to be updated\n if (sig.length !== 65) {\n throw new Error('Invalid signature length');\n }\n\n var v = sig[64];\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n\n return {\n v: v,\n r: sig.slice(0, 32),\n s: sig.slice(32, 64)\n };\n};\n\n/**\n * Returns the ethereum address of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(privateToPublic(privateKey));\n};\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too\n * @param {String} address\n * @return {Boolean}\n */\nexports.isValidAddress = function (address) {\n return (/^0x[0-9a-fA-F]{40}$/.test(address)\n );\n};\n\n/**\n * Checks if a given address is a zero address\n * @method isZeroAddress\n * @param {String} address\n * @return {Boolean}\n */\nexports.isZeroAddress = function (address) {\n var zeroAddress = exports.zeroAddress();\n return zeroAddress === exports.addHexPrefix(address);\n};\n\n/**\n * Returns a checksummed address\n * @param {String} address\n * @return {String}\n */\nexports.toChecksumAddress = function (address) {\n address = exports.stripHexPrefix(address).toLowerCase();\n var hash = exports.keccak(address).toString('hex');\n var ret = '0x';\n\n for (var i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n } else {\n ret += address[i];\n }\n }\n\n return ret;\n};\n\n/**\n * Checks if the address is a valid checksummed address\n * @param {Buffer} address\n * @return {Boolean}\n */\nexports.isValidChecksumAddress = function (address) {\n return exports.isValidAddress(address) && exports.toChecksumAddress(address) === address;\n};\n\n/**\n * Generates an address of a newly created contract\n * @param {Buffer} from the address which is creating this new address\n * @param {Buffer} nonce the nonce of the from account\n * @return {Buffer}\n */\nexports.generateAddress = function (from, nonce) {\n from = exports.toBuffer(from);\n nonce = new BN(nonce);\n\n if (nonce.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n nonce = null;\n } else {\n nonce = Buffer.from(nonce.toArray());\n }\n\n // Only take the lower 160bits of the hash\n return exports.rlphash([from, nonce]).slice(-20);\n};\n\n/**\n * Returns true if the supplied address belongs to a precompiled account (Byzantium)\n * @param {Buffer|String} address\n * @return {Boolean}\n */\nexports.isPrecompiled = function (address) {\n var a = exports.unpad(address);\n return a.length === 1 && a[0] >= 1 && a[0] <= 8;\n};\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\"\n * @param {String} str\n * @return {String}\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return exports.isHexPrefixed(str) ? str : '0x' + str;\n};\n\n/**\n * Validate ECDSA signature\n * @method isValidSignature\n * @param {Buffer} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @param {Boolean} [homestead=true]\n * @return {Boolean}\n */\n\nexports.isValidSignature = function (v, r, s, homestead) {\n var SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n var SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n\n if (v !== 27 && v !== 28) {\n return false;\n }\n\n r = new BN(r);\n s = new BN(s);\n\n if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {\n return false;\n }\n\n if (homestead === false && new BN(s).cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Converts a `Buffer` or `Array` to JSON\n * @param {Buffer|Array} ba\n * @return {Array|String|null}\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return '0x' + ba.toString('hex');\n } else if (ba instanceof Array) {\n var array = [];\n for (var i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param {Object} self the `Object` to define properties on\n * @param {Array} fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param {*} data data to be validated against the definitions\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n\n // attach the `toJSON`\n self.toJSON = function (label) {\n if (label) {\n var obj = {};\n self._fields.forEach(function (field) {\n obj[field] = '0x' + self[field].toString('hex');\n });\n return obj;\n }\n return exports.baToJSON(this.raw);\n };\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n\n fields.forEach(function (field, i) {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = exports.toBuffer(v);\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n\n if (field.allowLess && field.length) {\n v = exports.stripZeros(v);\n assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes');\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length);\n }\n\n self.raw[i] = v;\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n\n if (field.default) {\n self[field.name] = field.default;\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(exports.stripHexPrefix(data), 'hex');\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n\n // make sure all the items are buffers\n data.forEach(function (d, i) {\n self[self._fields[i]] = exports.toBuffer(d);\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n var keys = Object.keys(data);\n fields.forEach(function (field) {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias];\n });\n } else {\n throw new Error('invalid data');\n }\n }\n};","'use strict';\n\nvar secp256k1 = require('ethereum-cryptography/secp256k1');\n\nvar secp256k1v3 = require('./secp256k1-lib/index');\nvar der = require('./secp256k1-lib/der');\n\n/**\n * Verify an ECDSA privateKey\n * @method privateKeyVerify\n * @param {Buffer} privateKey\n * @return {boolean}\n */\nvar privateKeyVerify = function privateKeyVerify(privateKey) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n return false;\n }\n\n return secp256k1.privateKeyVerify(Uint8Array.from(privateKey));\n};\n\n/**\n * Export a privateKey in DER format\n * @method privateKeyExport\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {boolean}\n */\nvar privateKeyExport = function privateKeyExport(privateKey, compressed) {\n // privateKeyExport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n var publicKey = secp256k1v3.privateKeyExport(privateKey, compressed);\n\n return der.privateKeyExport(privateKey, publicKey, compressed);\n};\n\n/**\n * Import a privateKey in DER format\n * @method privateKeyImport\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\n\nvar privateKeyImport = function privateKeyImport(privateKey) {\n // privateKeyImport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n privateKey = der.privateKeyImport(privateKey);\n if (privateKey !== null && privateKey.length === 32 && privateKeyVerify(privateKey)) {\n return privateKey;\n }\n\n throw new Error(\"couldn't import from DER format\");\n};\n\n/**\n * Negate a privateKey by subtracting it from the order of the curve's base point\n * @method privateKeyNegate\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyNegate = function privateKeyNegate(privateKey) {\n return Buffer.from(secp256k1.privateKeyNegate(Uint8Array.from(privateKey)));\n};\n\n/**\n * Compute the inverse of a privateKey (modulo the order of the curve's base point).\n * @method privateKeyModInverse\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyModInverse = function privateKeyModInverse(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.privateKeyModInverse(Uint8Array.from(privateKey)));\n};\n\n/**\n * Tweak a privateKey by adding tweak to it.\n * @method privateKeyTweakAdd\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakAdd = function privateKeyTweakAdd(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakAdd(Uint8Array.from(privateKey), tweak));\n};\n\n/**\n * Tweak a privateKey by multiplying it by a tweak.\n * @method privateKeyTweakMul\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakMul = function privateKeyTweakMul(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakMul(Uint8Array.from(privateKey), Uint8Array.from(tweak)));\n};\n\n/**\n * Compute the public key for a privateKey.\n * @method publicKeyCreate\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCreate = function publicKeyCreate(privateKey, compressed) {\n return Buffer.from(secp256k1.publicKeyCreate(Uint8Array.from(privateKey), compressed));\n};\n\n/**\n * Convert a publicKey to compressed or uncompressed form.\n * @method publicKeyConvert\n * @param {Buffer} publicKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyConvert = function publicKeyConvert(publicKey, compressed) {\n return Buffer.from(secp256k1.publicKeyConvert(Uint8Array.from(publicKey), compressed));\n};\n\n/**\n * Verify an ECDSA publicKey.\n * @method publicKeyVerify\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar publicKeyVerify = function publicKeyVerify(publicKey) {\n // secp256k1 v4 version throws when publicKey length is not 33 or 65\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(Uint8Array.from(publicKey));\n};\n\n/**\n * Tweak a publicKey by adding tweak times the generator to it.\n * @method publicKeyTweakAdd\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakAdd = function publicKeyTweakAdd(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakAdd(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Tweak a publicKey by multiplying it by a tweak value\n * @method publicKeyTweakMul\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakMul = function publicKeyTweakMul(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakMul(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Add a given publicKeys together.\n * @method publicKeyCombine\n * @param {Array} publicKeys\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCombine = function publicKeyCombine(publicKeys, compressed) {\n var keys = [];\n publicKeys.forEach(function (publicKey) {\n keys.push(Uint8Array.from(publicKey));\n });\n\n return Buffer.from(secp256k1.publicKeyCombine(keys, compressed));\n};\n\n/**\n * Convert a signature to a normalized lower-S form.\n * @method signatureNormalize\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureNormalize = function signatureNormalize(signature) {\n return Buffer.from(secp256k1.signatureNormalize(Uint8Array.from(signature)));\n};\n\n/**\n * Serialize an ECDSA signature in DER format.\n * @method signatureExport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureExport = function signatureExport(signature) {\n return Buffer.from(secp256k1.signatureExport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImport = function signatureImport(signature) {\n return Buffer.from(secp256k1.signatureImport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (not follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImportLax\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImportLax = function signatureImportLax(signature) {\n // signatureImportLax method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure that signature is greater than 0\n if (signature.length === 0) {\n throw new RangeError('signature length is invalid');\n }\n\n var sigObj = der.signatureImportLax(signature);\n if (sigObj === null) {\n throw new Error(\"couldn't parse DER signature\");\n }\n\n return secp256k1v3.signatureImport(sigObj);\n};\n\n/**\n * Create an ECDSA signature. Always return low-S signature.\n * @method sign\n * @param {Buffer} message\n * @param {Buffer} privateKey\n * @param {Object} options\n * @return {Buffer}\n */\nvar sign = function sign(message, privateKey, options) {\n if (options === null) {\n throw new TypeError('options should be an Object');\n }\n\n var signOptions = void 0;\n\n if (options) {\n signOptions = {};\n\n if (options.data === null) {\n throw new TypeError('options.data should be a Buffer');\n }\n\n if (options.data) {\n // validate option.data length\n if (options.data.length !== 32) {\n throw new RangeError('options.data length is invalid');\n }\n\n signOptions.data = new Uint8Array(options.data);\n }\n\n if (options.noncefn === null) {\n throw new TypeError('options.noncefn should be a Function');\n }\n\n if (options.noncefn) {\n // convert option.noncefn function signature\n signOptions.noncefn = function (message, privateKey, algo, data, attempt) {\n var bufferAlgo = algo != null ? Buffer.from(algo) : null;\n var bufferData = data != null ? Buffer.from(data) : null;\n\n var buffer = Buffer.from('');\n\n if (options.noncefn) {\n buffer = options.noncefn(Buffer.from(message), Buffer.from(privateKey), bufferAlgo, bufferData, attempt);\n }\n\n return Uint8Array.from(buffer);\n };\n }\n }\n\n var sig = secp256k1.ecdsaSign(Uint8Array.from(message), Uint8Array.from(privateKey), signOptions);\n\n return {\n signature: Buffer.from(sig.signature),\n recovery: sig.recid\n };\n};\n\n/**\n * Verify an ECDSA signature.\n * @method verify\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar verify = function verify(message, signature, publicKey) {\n // note: secp256k1 v4 verify method has a different argument order\n return secp256k1.ecdsaVerify(Uint8Array.from(signature), Uint8Array.from(message), publicKey);\n};\n\n/**\n * Recover an ECDSA public key from a signature.\n * @method recover\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Number} recid\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar recover = function recover(message, signature, recid, compressed) {\n // note: secp256k1 v4 recover method has a different argument order\n return Buffer.from(secp256k1.ecdsaRecover(Uint8Array.from(signature), recid, Uint8Array.from(message), compressed));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and applied sha256 to compressed public key.\n * @method ecdh\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar ecdh = function ecdh(publicKey, privateKey) {\n // note: secp256k1 v3 doesn't allow optional parameter\n return Buffer.from(secp256k1.ecdh(Uint8Array.from(publicKey), Uint8Array.from(privateKey), {}));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and return public key as result\n * @method ecdhUnsafe\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar ecdhUnsafe = function ecdhUnsafe(publicKey, privateKey, compressed) {\n // ecdhUnsafe method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure valid publicKey length\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n throw new RangeError('public key length is invalid');\n }\n\n // ensure valid privateKey length\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.ecdhUnsafe(Uint8Array.from(publicKey), Uint8Array.from(privateKey), compressed));\n};\n\nmodule.exports = {\n privateKeyVerify: privateKeyVerify,\n privateKeyExport: privateKeyExport,\n privateKeyImport: privateKeyImport,\n privateKeyNegate: privateKeyNegate,\n privateKeyModInverse: privateKeyModInverse,\n privateKeyTweakAdd: privateKeyTweakAdd,\n privateKeyTweakMul: privateKeyTweakMul,\n\n publicKeyCreate: publicKeyCreate,\n publicKeyConvert: publicKeyConvert,\n publicKeyVerify: publicKeyVerify,\n publicKeyTweakAdd: publicKeyTweakAdd,\n publicKeyTweakMul: publicKeyTweakMul,\n publicKeyCombine: publicKeyCombine,\n\n signatureNormalize: signatureNormalize,\n signatureExport: signatureExport,\n signatureImport: signatureImport,\n signatureImportLax: signatureImportLax,\n\n sign: sign,\n verify: verify,\n recover: recover,\n\n ecdh: ecdh,\n ecdhUnsafe: ecdhUnsafe\n};","\"use strict\";\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n// begin\n0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x21, 0x02, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n// begin\n0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x41, 0x04, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED);\n privateKey.copy(result, compressed ? 8 : 9);\n publicKey.copy(result, compressed ? 181 : 214);\n return result;\n};\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length;\n\n // sequence header\n var index = 0;\n if (length < index + 1 || privateKey[index] !== 0x30) return null;\n index += 1;\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return null;\n\n var lenb = privateKey[index] & 0x7f;\n index += 1;\n if (lenb < 1 || lenb > 2) return null;\n if (length < index + lenb) return null;\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0);\n index += lenb;\n if (length < index + len) return null;\n\n // sequence element 0: version number (=1)\n if (length < index + 3 || privateKey[index] !== 0x02 || privateKey[index + 1] !== 0x01 || privateKey[index + 2] !== 0x01) {\n return null;\n }\n index += 3;\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 || privateKey[index] !== 0x04 || privateKey[index + 1] > 0x20 || length < index + 2 + privateKey[index + 1]) {\n return null;\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1]);\n};\n\nexports.signatureImportLax = function (signature) {\n var r = Buffer.alloc(32, 0);\n var s = Buffer.alloc(32, 0);\n\n var length = signature.length;\n var index = 0;\n\n // sequence tag byte\n if (signature[index++] !== 0x30) {\n return null;\n }\n\n // sequence length byte\n var lenbyte = signature[index++];\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80;\n if (index > length) {\n return null;\n }\n }\n\n // sequence tag byte for r\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for r\n var rlen = signature[index++];\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n rlen = (rlen << 8) + signature[index];\n }\n }\n if (rlen > length - index) {\n return null;\n }\n var rindex = index;\n index += rlen;\n\n // sequence tag byte for s\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for s\n var slen = signature[index++];\n if (slen & 0x80) {\n lenbyte = slen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n slen = (slen << 8) + signature[index];\n }\n }\n if (slen > length - index) {\n return null;\n }\n var sindex = index;\n index += slen;\n\n // ignore leading zeros in r\n for (; rlen > 0 && signature[rindex] === 0x00; rlen -= 1, rindex += 1) {}\n // copy r value\n if (rlen > 32) {\n return null;\n }\n var rvalue = signature.slice(rindex, rindex + rlen);\n rvalue.copy(r, 32 - rvalue.length);\n\n // ignore leading zeros in s\n for (; slen > 0 && signature[sindex] === 0x00; slen -= 1, sindex += 1) {}\n // copy s value\n if (slen > 32) {\n return null;\n }\n var svalue = signature.slice(sindex, sindex + slen);\n svalue.copy(s, 32 - svalue.length);\n\n return { r: r, s: s };\n};","'use strict';\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\n\nvar ec = new EC('secp256k1');\nvar ecparams = ec.curve;\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey);\n if (d.ucmp(ecparams.n) >= 0) {\n throw new Error('couldn\\'t export to DER format');\n }\n\n var point = ec.g.mul(d);\n return toPublicKey(point.getX(), point.getY(), compressed);\n};\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey);\n if (bn.ucmp(ecparams.n) >= 0 || bn.isZero()) {\n throw new Error('private key range is invalid');\n }\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32);\n};\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r);\n if (r.ucmp(ecparams.n) >= 0) {\n r = new BN(0);\n }\n\n var s = new BN(sigObj.s);\n if (s.ucmp(ecparams.n) >= 0) {\n s = new BN(0);\n }\n\n return Buffer.concat([r.toArrayLike(Buffer, 'be', 32), s.toArrayLike(Buffer, 'be', 32)]);\n};\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var point = ec.keyFromPublic(publicKey);\n\n var scalar = new BN(privateKey);\n if (scalar.ucmp(ecparams.n) >= 0 || scalar.isZero()) {\n throw new Error('scalar was invalid (zero or overflow)');\n }\n\n var shared = point.pub.mul(scalar);\n return toPublicKey(shared.getX(), shared.getY(), compressed);\n};\n\nvar toPublicKey = function toPublicKey(x, y, compressed) {\n var publicKey = void 0;\n\n if (compressed) {\n publicKey = Buffer.alloc(33);\n publicKey[0] = y.isOdd() ? 0x03 : 0x02;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n } else {\n publicKey = Buffer.alloc(65);\n publicKey[0] = 0x04;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n y.toArrayLike(Buffer, 'be', 32).copy(publicKey, 33);\n }\n\n return publicKey;\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar BN = require('bn.js');\nvar numberToBN = require('number-to-bn');\n\nvar zero = new BN(0);\nvar negative1 = new BN(-1);\n\n// complete ethereum unit map\nvar unitMap = {\n 'noether': '0', // eslint-disable-line\n 'wei': '1', // eslint-disable-line\n 'kwei': '1000', // eslint-disable-line\n 'Kwei': '1000', // eslint-disable-line\n 'babbage': '1000', // eslint-disable-line\n 'femtoether': '1000', // eslint-disable-line\n 'mwei': '1000000', // eslint-disable-line\n 'Mwei': '1000000', // eslint-disable-line\n 'lovelace': '1000000', // eslint-disable-line\n 'picoether': '1000000', // eslint-disable-line\n 'gwei': '1000000000', // eslint-disable-line\n 'Gwei': '1000000000', // eslint-disable-line\n 'shannon': '1000000000', // eslint-disable-line\n 'nanoether': '1000000000', // eslint-disable-line\n 'nano': '1000000000', // eslint-disable-line\n 'szabo': '1000000000000', // eslint-disable-line\n 'microether': '1000000000000', // eslint-disable-line\n 'micro': '1000000000000', // eslint-disable-line\n 'finney': '1000000000000000', // eslint-disable-line\n 'milliether': '1000000000000000', // eslint-disable-line\n 'milli': '1000000000000000', // eslint-disable-line\n 'ether': '1000000000000000000', // eslint-disable-line\n 'kether': '1000000000000000000000', // eslint-disable-line\n 'grand': '1000000000000000000000', // eslint-disable-line\n 'mether': '1000000000000000000000000', // eslint-disable-line\n 'gether': '1000000000000000000000000000', // eslint-disable-line\n 'tether': '1000000000000000000000000000000' };\n\n/**\n * Returns value of unit in Wei\n *\n * @method getValueOfUnit\n * @param {String} unit the unit to convert to, default ether\n * @returns {BigNumber} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nfunction getValueOfUnit(unitInput) {\n var unit = unitInput ? unitInput.toLowerCase() : 'ether';\n var unitValue = unitMap[unit]; // eslint-disable-line\n\n if (typeof unitValue !== 'string') {\n throw new Error('[ethjs-unit] the unit provided ' + unitInput + ' doesn\\'t exists, please use the one of the following units ' + JSON.stringify(unitMap, null, 2));\n }\n\n return new BN(unitValue, 10);\n}\n\nfunction numberToString(arg) {\n if (typeof arg === 'string') {\n if (!arg.match(/^-?[0-9.]+$/)) {\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\', should be a number matching (^-?[0-9.]+).');\n }\n return arg;\n } else if (typeof arg === 'number') {\n return String(arg);\n } else if (typeof arg === 'object' && arg.toString && (arg.toTwos || arg.dividedToIntegerBy)) {\n if (arg.toPrecision) {\n return String(arg.toPrecision());\n } else {\n // eslint-disable-line\n return arg.toString(10);\n }\n }\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\' type ' + typeof arg + '.');\n}\n\nfunction fromWei(weiInput, unit, optionsInput) {\n var wei = numberToBN(weiInput); // eslint-disable-line\n var negative = wei.lt(zero); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n var options = optionsInput || {};\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n var fraction = wei.mod(base).toString(10); // eslint-disable-line\n\n while (fraction.length < baseLength) {\n fraction = '0' + fraction;\n }\n\n if (!options.pad) {\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n }\n\n var whole = wei.div(base).toString(10); // eslint-disable-line\n\n if (options.commify) {\n whole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n var value = '' + whole + (fraction == '0' ? '' : '.' + fraction); // eslint-disable-line\n\n if (negative) {\n value = '-' + value;\n }\n\n return value;\n}\n\nfunction toWei(etherInput, unit) {\n var ether = numberToString(etherInput); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n\n // Is it negative?\n var negative = ether.substring(0, 1) === '-'; // eslint-disable-line\n if (negative) {\n ether = ether.substring(1);\n }\n\n if (ether === '.') {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, invalid value');\n }\n\n // Split it into a whole and fractional part\n var comps = ether.split('.'); // eslint-disable-line\n if (comps.length > 2) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal points');\n }\n\n var whole = comps[0],\n fraction = comps[1]; // eslint-disable-line\n\n if (!whole) {\n whole = '0';\n }\n if (!fraction) {\n fraction = '0';\n }\n if (fraction.length > baseLength) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal places');\n }\n\n while (fraction.length < baseLength) {\n fraction += '0';\n }\n\n whole = new BN(whole);\n fraction = new BN(fraction);\n var wei = whole.mul(base).add(fraction); // eslint-disable-line\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n return new BN(wei.toString(10), 10);\n}\n\nmodule.exports = {\n unitMap: unitMap,\n numberToString: numberToString,\n getValueOfUnit: getValueOfUnit,\n fromWei: fromWei,\n toWei: toWei\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar isHexPrefixed = require('is-hex-prefixed');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Pads a `String` to have an even length\n * @param {String} value\n * @return {String} output\n */\nfunction padToEven(value) {\n var a = value; // eslint-disable-line\n\n if (typeof a !== 'string') {\n throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');\n }\n\n if (a.length % 2) {\n a = '0' + a;\n }\n\n return a;\n}\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nfunction intToHex(i) {\n var hex = i.toString(16); // eslint-disable-line\n\n return '0x' + hex;\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nfunction intToBuffer(i) {\n var hex = intToHex(i);\n\n return new Buffer(padToEven(hex.slice(2)), 'hex');\n}\n\n/**\n * Get the binary size of a string\n * @param {String} str\n * @return {Number}\n */\nfunction getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \\'str\\' to be type String, got \\'' + typeof str + '\\'.');\n }\n\n return Buffer.byteLength(str, 'utf8');\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'superset\\' to be an array got type \\'' + typeof superset + '\\'');\n }\n if (Array.isArray(subset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'subset\\' to be an array got type \\'' + typeof subset + '\\'');\n }\n\n return subset[Boolean(some) && 'some' || 'every'](function (value) {\n return superset.indexOf(value) >= 0;\n });\n}\n\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method toUtf8\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toUtf8(hex) {\n var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');\n\n return bufferValue.toString('utf8');\n}\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method toAscii\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toAscii(hex) {\n var str = ''; // eslint-disable-line\n var i = 0,\n l = hex.length; // eslint-disable-line\n\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method fromUtf8\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromUtf8(stringValue) {\n var str = new Buffer(stringValue, 'utf8');\n\n return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method fromAscii\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromAscii(stringValue) {\n var hex = ''; // eslint-disable-line\n for (var i = 0; i < stringValue.length; i++) {\n // eslint-disable-line\n var code = stringValue.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return '0x' + hex;\n}\n\n/**\n * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n *\n * @method getKeys get specific key from inner object array of objects\n * @param {String} params\n * @param {String} key\n * @param {Boolean} allowEmpty\n * @returns {Array} output just a simple array of output keys\n */\nfunction getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error('[ethjs-util] method getKeys expecting type Array as \\'params\\' input, got \\'' + typeof params + '\\'');\n }\n if (typeof key !== 'string') {\n throw new Error('[ethjs-util] method getKeys expecting type String for input \\'key\\' got \\'' + typeof key + '\\'.');\n }\n\n var result = []; // eslint-disable-line\n\n for (var i = 0; i < params.length; i++) {\n // eslint-disable-line\n var value = params[i][key]; // eslint-disable-line\n if (allowEmpty && !value) {\n value = '';\n } else if (typeof value !== 'string') {\n throw new Error('invalid abi');\n }\n result.push(value);\n }\n\n return result;\n}\n\n/**\n * Is the string a hex string.\n *\n * @method check if string is hex string of specific length\n * @param {String} value\n * @param {Number} length\n * @returns {Boolean} output the string is a hex string\n */\nfunction isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n arrayContainsArray: arrayContainsArray,\n intToBuffer: intToBuffer,\n getBinarySize: getBinarySize,\n isHexPrefixed: isHexPrefixed,\n stripHexPrefix: stripHexPrefix,\n padToEven: padToEven,\n intToHex: intToHex,\n fromAscii: fromAscii,\n fromUtf8: fromUtf8,\n toAscii: toAscii,\n toUtf8: toUtf8,\n getKeys: getKeys,\n isHexString: isHexString\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","// 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\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\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\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 ReflectApply(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 ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\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\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_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\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\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 if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\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}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\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 reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.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'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","/* This file is generated from the Unicode IDNA table, using\n the build-unicode-tables.py script. Please edit that\n script instead of this file. */\n\n/* istanbul ignore next */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], function () { return factory(); });\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.uts46_map = factory();\n }\n}(this, function () {\nvar blocks = [\n new Uint32Array([2157250,2157314,2157378,2157442,2157506,2157570,2157634,0,2157698,2157762,2157826,2157890,2157954,0,2158018,0]),\n new Uint32Array([2179041,6291456,2179073,6291456,2179105,6291456,2179137,6291456,2179169,6291456,2179201,6291456,2179233,6291456,2179265,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([0,2113729,2197345,2197377,2113825,2197409,2197441,2113921,2197473,2114017,2197505,2197537,2197569,2197601,2197633,2197665]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672,23068672,0,0,0,0,23068672]),\n new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064]),\n new Uint32Array([2196001,2196033,2196065,2196097,2196129,2196161,2196193,2196225,2196257,2196289,2196321,2196353,2196385,2196417,2196449,2196481]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,0,0,0,0,0]),\n new Uint32Array([2097281,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([2177025,6291456,2177057,6291456,2177089,6291456,2177121,6291456,2177153,6291456,2177185,6291456,2177217,6291456,2177249,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456]),\n new Uint32Array([2134435,2134531,2134627,2134723,2134723,2134819,2134819,2134915,2134915,2135011,2105987,2135107,2135203,2135299,2131587,2135395]),\n new Uint32Array([0,0,0,0,0,0,0,6291456,2168673,2169249,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354,2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354]),\n new Uint32Array([2125219,2125315,2152834,2152898,2125411,2152962,2153026,2125506,2125507,2125603,2153090,2153154,2153218,2153282,2153346,2105348]),\n new Uint32Array([2203393,6291456,2203425,6291456,2203457,6291456,2203489,6291456,6291456,6291456,6291456,2203521,6291456,2181281,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,6291456,2145538,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,6291456]),\n new Uint32Array([2139426,2160834,2160898,2160962,2134242,2161026,2161090,2161154,2161218,2161282,2161346,2161410,2138658,2161474,2161538,2134722]),\n new Uint32Array([2119939,2124930,2125026,2106658,2125218,2128962,2129058,2129154,2129250,2129346,2129442,2108866,2108770,2150466,2150530,2150594]),\n new Uint32Array([2201601,6291456,2201633,6291456,2201665,6291456,2201697,6291456,2201729,6291456,2201761,6291456,2201793,6291456,2201825,6291456]),\n new Uint32Array([2193537,2193569,2193601,2193633,2193665,2193697,2193729,2193761,2193793,2193825,2193857,2193889,2193921,2193953,2193985,2194017]),\n new Uint32Array([6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2190561,6291456,2190593,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2190625,6291456,2190657,6291456,23068672]),\n new Uint32Array([2215905,2215937,2215969,2216001,2216033,2216065,2216097,2216129,2216161,2216193,2216225,2216257,2105441,2216289,2216321,2216353]),\n new Uint32Array([23068672,18884130,23068672,23068672,23068672,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2191233,2191265,2191297,2191329,2191361,2191393,2191425,2117377,2191457,2191489,2191521,2191553,2191585,2191617,2191649,2117953]),\n new Uint32Array([2132227,2132323,2132419,2132419,2132515,2132515,2132611,2132707,2132707,2132803,2132899,2132899,2132995,2132995,2133091,2133187]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,0,0]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10609889,10610785,10609921,10610817,2222241]),\n new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),\n new Uint32Array([2219969,2157121,2157441,2157505,2157889,2157953,2220001,2158465,2158529,10575617,2156994,2157058,2129923,2130019,2157122,2157186]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2185249,6291456,2185281,6291456,2185313,6291456,2185345,6291456,2185377,6291456,2185409,6291456,2185441,6291456,2185473,6291456]),\n new Uint32Array([0,0,0,0,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,6291456,0]),\n new Uint32Array([2183361,6291456,2183393,6291456,2183425,6291456,2183457,6291456,2183489,6291456,2183521,6291456,2183553,6291456,2183585,6291456]),\n new Uint32Array([2192161,2192193,2192225,2192257,2192289,2192321,2192353,2192385,2192417,2192449,2192481,2192513,2192545,2192577,2192609,2192641]),\n new Uint32Array([2212001,2212033,2212065,2212097,2212129,2212161,2212193,2212225,2212257,2212289,2212321,2212353,2212385,2212417,2212449,2207265]),\n new Uint32Array([2249825,2249857,2249889,2249921,2249954,2250018,2250082,2250145,2250177,2250209,2250241,2250274,2250337,2250370,2250433,2250465]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147905,2147969,2148033,2148097,2148161,2148225,2148289,2148353]),\n new Uint32Array([10485857,6291456,2197217,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2180353,2180385,2144033,2180417,2180449,2180481,2180513,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10610209,10610465,10610241,10610753,10609857]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),\n new Uint32Array([2223842,2223906,2223970,2224034,2224098,2224162,2224226,2224290,2224354,2224418,2224482,2224546,2224610,2224674,2224738,2224802]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([23068672,23068672,23068672,18923650,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,18923714,23068672,23068672]),\n new Uint32Array([2126179,2125538,2126275,2126371,2126467,2125634,2126563,2105603,2105604,2125346,2126659,2126755,2126851,2098179,2098181,2098182]),\n new Uint32Array([2227426,2227490,2227554,2227618,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2192353,2240642,2240642,2240705,2240737,2240737,2240769,2240802,2240866,2240929,2240961,2240993,2241025,2241057,2241089,2241121]),\n new Uint32Array([6291456,2170881,2170913,2170945,6291456,2170977,6291456,2171009,2171041,6291456,6291456,6291456,2171073,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2132226,2132514,2163586,2132610,2160386,2133090,2133186,2160450,2160514,2160578,2133570,2106178,2160642,2133858,2160706,2160770]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10532162,10532226,10532290,10532354,10532418,10532482,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),\n new Uint32Array([2098209,2108353,2108193,2108481,2170241,2111713,2105473,2105569,2105601,2112289,2112481,2098305,2108321,0,0,0]),\n new Uint32Array([2209121,2209153,2209185,2209217,2209249,2209281,2209313,2209345,2209377,2209409,2209441,2209473,2207265,2209505,2209537,2209569]),\n new Uint32Array([2189025,6291456,2189057,6291456,2189089,6291456,2189121,6291456,2189153,6291456,2189185,6291456,2189217,6291456,2189249,6291456]),\n new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2165764,2140004]),\n new Uint32Array([2215105,6291456,2215137,6291456,6291456,2215169,2215201,6291456,6291456,6291456,2215233,2215265,2215297,2215329,2215361,2215393]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,23068672,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([10505091,10505187,10505283,10505379,10505475,10505571,10505667,10505763,10505859,10505955,10506051,10506147,10506243,10506339,10506435,10506531]),\n new Uint32Array([2229730,2229794,2229858,2229922,2229986,2230050,2230114,2230178,2230242,2230306,2230370,2230434,2230498,2230562,2230626,2230690]),\n new Uint32Array([2105505,2098241,2108353,2108417,2105825,0,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),\n new Uint32Array([6291456,6291456,6291456,6291456,10502115,10502178,10502211,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2190305,6291456,2190337,6291456,2190369,6291456,2190401,6291456,2190433,6291456,2190465,6291456,2190497,6291456,2190529,6291456]),\n new Uint32Array([2173793,2173985,2174017,6291456,2173761,2173697,6291456,2174689,6291456,2174017,2174721,6291456,6291456,2174753,2174785,2174817]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609,2100033]),\n new Uint32Array([2132898,2163842,2163906,2133282,2132034,2131938,2137410,2132802,2132706,2164866,2133282,2160578,2165186,2165186,6291456,6291456]),\n new Uint32Array([10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059,10501155,10501251,10501347,10501443]),\n new Uint32Array([2163458,2130978,2131074,2131266,2131362,2163522,2160130,2132066,2131010,2131106,2106018,2131618,2131298,2132034,2131938,2137410]),\n new Uint32Array([2212961,2116993,2212993,2213025,2213057,2213089,2213121,2213153,2213185,2213217,2213249,2209633,2213281,2213313,2213345,2213377]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2113729,2113825,2113921,2114017,2114113,2114209,2114305,2114401,2114497,2114593,2114689,2114785,2114881,2114977,2115073,2115169]),\n new Uint32Array([2238177,2238209,2238241,2238273,2238305,2238337,2238337,2217537,2238369,2238401,2238433,2238465,2215649,2238497,2238529,2238561]),\n new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),\n new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0]),\n new Uint32Array([6291456,0,6291456,2145026,0,6291456,2145090,0,6291456,6291456,0,0,23068672,0,23068672,23068672]),\n new Uint32Array([2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129,2100289]),\n new Uint32Array([6291456,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0]),\n new Uint32Array([2187681,2187713,2187745,2187777,2187809,2187841,2187873,2187905,2187937,2187969,2188001,2188033,2188065,2188097,2188129,2188161]),\n new Uint32Array([0,10554498,10554562,10554626,10554690,10554754,10554818,10554882,10554946,10555010,10555074,6291456,6291456,0,0,0]),\n new Uint32Array([2235170,2235234,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0]),\n new Uint32Array([2181153,6291456,2188897,6291456,6291456,2188929,6291456,6291456,6291456,6291456,6291456,6291456,2111905,2100865,2188961,2188993]),\n new Uint32Array([2100833,2100897,0,0,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,2112289]),\n new Uint32Array([6291456,2172833,6291456,2172865,2172897,2172929,2172961,6291456,2172993,6291456,2173025,6291456,2173057,6291456,2173089,6291456]),\n new Uint32Array([6291456,0,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,2190721]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456]),\n new Uint32Array([2184993,6291456,2185025,6291456,2185057,6291456,2185089,6291456,2185121,6291456,2185153,6291456,2185185,6291456,2185217,6291456]),\n new Uint32Array([2115265,2115361,2115457,2115553,2115649,2115745,2115841,2115937,2116033,2116129,2116225,2116321,2150658,2150722,2200225,6291456]),\n new Uint32Array([2168321,6291456,2168353,6291456,2168385,6291456,2168417,6291456,2168449,6291456,2168481,6291456,2168513,6291456,2168545,6291456]),\n new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,0,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,2186625,0,0,6291456,6291456,2186657,2186689,2186721,2173505,0,10496067,10496163,10496259]),\n new Uint32Array([2178785,6291456,2178817,6291456,2178849,6291456,2178881,6291456,2178913,6291456,2178945,6291456,2178977,6291456,2179009,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2097152,0,0,0,2097152,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,2197857,2197889,2197921,2197953,2197985,2198017,0,0,2198049,2198081,2198113,2198145,2198177,2198209]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2098209,2167297,2111137,6291456]),\n new Uint32Array([2171393,6291456,2171425,6291456,2171457,6291456,2171489,6291456,2171521,6291456,2171553,6291456,2171585,6291456,2171617,6291456]),\n new Uint32Array([2206753,2206785,2195457,2206817,2206849,2206881,2206913,2197153,2197153,2206945,2117857,2206977,2207009,2207041,2207073,2207105]),\n new Uint32Array([0,0,0,0,0,0,0,23068672,0,0,0,0,2144834,2144898,0,2144962]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672]),\n new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,0,2105505,2098241]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,2202049,6291456,2202081,6291456,2202113,6291456,2202145,6291456,2202177,6291456,2202209,6291456,2202241,6291456]),\n new Uint32Array([10501155,10501251,10501347,10501443,10501539,10501635,10501731,10501827,10501923,10502019,2141731,2105505,2098177,2155586,2166530,0]),\n new Uint32Array([2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441]),\n new Uint32Array([2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330,2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([10502307,10502403,10502499,10502595,10502691,10502787,10502883,10502979,10503075,10503171,10503267,10503363,10503459,10503555,10503651,10503747]),\n new Uint32Array([2179937,2179969,2180001,2180033,2156545,2180065,2156577,2180097,2180129,2180161,2180193,2180225,2180257,2180289,2156737,2180321]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,0,0,6291456,0,0,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),\n new Uint32Array([2227682,2227746,2227810,2227874,2227938,2228002,2228066,2228130,2228194,2228258,2228322,2228386,2228450,2228514,2228578,2228642]),\n new Uint32Array([2105601,2169121,2108193,2170049,2181025,2181057,2112481,2108321,2108289,2181089,2170497,2100865,2181121,2173601,2173633,2173665]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180641,6291456,6291456,6291456]),\n new Uint32Array([0,6291456,6291456,6291456,0,6291456,0,6291456,0,0,6291456,6291456,0,6291456,6291456,6291456]),\n new Uint32Array([2178273,6291456,2178305,6291456,2178337,6291456,2178369,6291456,2178401,6291456,2178433,6291456,2178465,6291456,2178497,6291456]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),\n new Uint32Array([2237377,2237409,2236225,2237441,2237473,2217441,2215521,2215553,2217473,2237505,2237537,2209697,2237569,2215585,2237601,2237633]),\n new Uint32Array([2221985,2165601,2165601,2165665,2165665,2222017,2222017,2165729,2165729,2158913,2158913,2158913,2158913,2097281,2097281,2105921]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2149634,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2176897,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2176929,6291456,2176961,6291456,2176993,6291456]),\n new Uint32Array([2172641,6291456,2172673,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2172705,2172737,6291456,2172769,2172801,6291456]),\n new Uint32Array([2099173,2104196,2121667,2099395,2121763,2152258,2152322,2098946,2152386,2121859,2121955,2099333,2122051,2104324,2099493,2122147]),\n new Uint32Array([6291456,6291456,6291456,2145794,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2145858,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,0,0,6291456,0]),\n new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,0,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2239074,2239138,2239201,2239233,2239265,2239297,2239329,2239361,0,2239393,2239425,2239425,2239458,2239521,2239553,2209569]),\n new Uint32Array([14680064,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,6291456,23068672]),\n new Uint32Array([2108321,2108289,2113153,2098209,2180897,2180929,2180961,2111137,2098241,2108353,2170241,2170273,2180993,2105825,6291456,2105473]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146114,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([2105921,2105921,2105921,2222049,2222049,2130977,2130977,2130977,2130977,2160065,2160065,2160065,2160065,2097729,2097729,2097729]),\n new Uint32Array([2218145,2214785,2207937,2218177,2218209,2192993,2210113,2212769,2218241,2218273,2216129,2218305,2216161,2218337,2218369,2218401]),\n new Uint32Array([0,0,0,2156546,2156610,2156674,2156738,2156802,0,0,0,0,0,2156866,23068672,2156930]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2213409,2213441,2213473,2213505,2213537,2213569,2213601,2213633,2213665,2195681,2213697,2213729,2213761,2213793,2213825,2213857]),\n new Uint32Array([2100033,2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2201857,6291456,2201889,6291456,2201921,6291456,2201953,6291456,2201985,6291456,2202017,6291456,2176193,2176257,23068672,23068672]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2188193,2188225,2188257,2188289,2188321,2188353,2188385,2188417,2188449,2188481,2188513,2188545,2188577,2188609,2188641,0]),\n new Uint32Array([10554529,2221089,0,10502113,10562017,10537921,10538049,2221121,2221153,0,0,0,0,0,0,0]),\n new Uint32Array([2213889,2213921,2213953,2213985,2214017,2214049,2214081,2194177,2214113,2214145,2214177,2214209,2214241,2214273,2214305,2214337]),\n new Uint32Array([2166978,2167042,2099169,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180545,6291456,6291456,6291456]),\n new Uint32Array([10518915,10519011,10519107,10519203,2162242,2162306,2159554,2162370,2159362,2159618,2105922,2162434,2159746,2162498,2159810,2159874]),\n new Uint32Array([2161730,2161794,2135586,2161858,2161922,2137186,2131810,2160290,2135170,2161986,2137954,2162050,2162114,2162178,10518723,10518819]),\n new Uint32Array([10506627,10506723,10506819,10506915,10507011,10507107,10507203,10507299,10507395,10507491,10507587,10507683,10507779,10507875,10507971,10508067]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2175873,2175905,2175937,2175969,2176001,2176033,2176065,2176097,2176129,2176161,2176193,2176225,2176257,2176289,2176321,2176353]),\n new Uint32Array([2140006,2140198,2140390,2140582,2140774,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,23068672,23068672,23068672]),\n new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241]),\n new Uint32Array([0,23068672,0,0,0,0,0,0,0,2145154,2145218,2145282,6291456,0,2145346,0]),\n new Uint32Array([0,0,0,0,10531458,10495395,2148545,2143201,2173473,2148865,2173505,0,2173537,0,2173569,2149121]),\n new Uint32Array([10537282,10495683,2148738,2148802,2148866,0,6291456,2148930,2186593,2173473,2148737,2148865,2148802,10495779,10495875,10495971]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2215425,2215457,2215489,2215521,2215553,2215585,2215617,2215649,2215681,2215713,2215745,2215777,2192033,2215809,2215841,2215873]),\n new Uint32Array([2242049,2242081,2242113,2242145,2242177,2242209,2242241,2242273,2215937,2242305,2242338,2242401,2242433,2242465,2242497,2216001]),\n new Uint32Array([10554529,2221089,0,0,10562017,10502113,10538049,10537921,2221185,10489601,10489697,10609889,10609921,2141729,2141793,10610273]),\n new Uint32Array([2141923,2142019,2142115,2142211,2142307,2142403,2142499,2142595,2142691,0,0,0,0,0,0,0]),\n new Uint32Array([0,2221185,2221217,10609857,10609857,10489601,10489697,10609889,10609921,2141729,2141793,2221345,2221377,2221409,2221441,2187105]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18923970,23068672,23068672,23068672,0,6291456,6291456]),\n new Uint32Array([2183105,6291456,2183137,6291456,2183169,6291456,2183201,6291456,2183233,6291456,2183265,6291456,2183297,6291456,2183329,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2134434,2134818,2097666,2097186,2097474,2097698,2105986,2131586,2132450,2131874,2131778,2135970,2135778,2161602,2136162,2161666]),\n new Uint32Array([2236865,2236897,2236930,2236993,2237025,2235681,2237058,2237121,2237153,2237185,2237217,2217281,2237250,2191233,2237313,2237345]),\n new Uint32Array([2190049,6291456,2190081,6291456,2190113,6291456,2190145,6291456,2190177,6291456,2190209,6291456,2190241,6291456,2190273,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2101922,2102050,2102178,2102306,10498755,10498851,10498947,10499043,10499139,10499235,10499331,10499427,10499523,10489604,10489732,10489860]),\n new Uint32Array([2166914,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2181601,2170561,2181633,2181665,2170753,2181697,2172897,2170881,2181729,2170913,2172929,2113441,2181761,2181793,2171009,2173761]),\n new Uint32Array([0,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2248001,2248033,2248066,2248130,2248193,2248226,2248289,2248322,2248385,2248417,2216673,2248450,2248514,2248577,2248610,2248673]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([2169729,6291456,2169761,6291456,2169793,6291456,2169825,6291456,2169857,2169889,6291456,2169921,6291456,2143329,6291456,2098305]),\n new Uint32Array([2162178,2163202,2163266,2135170,2136226,2161986,2137954,2159426,2159490,2163330,2159554,2163394,2159682,2139522,2136450,2159746]),\n new Uint32Array([2173953,2173985,0,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2174209,2174241,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,4271169,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2174273]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,2190785,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2189793,6291456,2189825,6291456,2189857,6291456,2189889,6291456,2189921,6291456,2189953,6291456,2189985,6291456,2190017,6291456]),\n new Uint32Array([2105601,2112289,2108193,2112481,2112577,0,2098305,2108321,2108289,2100865,2113153,2108481,2113345,0,2098209,2111137]),\n new Uint32Array([2172129,6291456,2172161,6291456,2172193,6291456,2172225,6291456,2172257,6291456,2172289,6291456,2172321,6291456,2172353,6291456]),\n new Uint32Array([2214753,6291456,2214785,6291456,6291456,2214817,2214849,2214881,2214913,2214945,2214977,2215009,2215041,2215073,2194401,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,0,0,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([10610305,10610337,10575617,2221761,10610401,10610433,10502177,0,10610465,10610497,10610529,10610561,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,0,0,0,0,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2187105,2187137,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2199393,2199425,2199457,2199489,2199521,2199553,2199585,2199617,2199649,2199681,2199713,2199745,2199777,2199809,2199841,0]),\n new Uint32Array([2217249,2217281,2217313,2217345,2217377,2217409,2217441,2217473,2215617,2217505,2217537,2217569,2214753,2217601,2217633,2217665]),\n new Uint32Array([2170273,2170305,6291456,2170337,2170369,6291456,2170401,2170433,2170465,6291456,6291456,6291456,2170497,2170529,6291456,2170561]),\n new Uint32Array([2188673,6291456,2188705,2188737,2188769,6291456,6291456,2188801,6291456,2188833,6291456,2188865,6291456,2180929,2181505,2180897]),\n new Uint32Array([10489988,10490116,10490244,10490372,10490500,10490628,10490756,10490884,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147393,2147457,2147521,2147585,2147649,2147713,2147777,2147841]),\n new Uint32Array([23068672,23068672,0,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2241153,2241185,2241217,2215809,2241250,2241313,2241345,2241377,2217921,2241377,2241409,2215873,2241441,2241473,2241505,2241537]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220417,2220417,2220449,2220449,2220481,2220481,2220513,2220513,2220545,2220545,2220577,2220577,2220609,2220609,2220641,2220641]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2144002,0,6291456,6291456,0,0,6291456,6291456,6291456]),\n new Uint32Array([2167105,2167137,2167169,2167201,2167233,2167265,2167297,2167329,2167361,2167393,2167425,2167457,2167489,2167521,2167553,2167585]),\n new Uint32Array([10575521,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([2234146,2234210,2234274,2234338,2234402,2234466,2234530,2234594,2234658,2234722,2234786,2234850,2234914,2234978,2235042,2235106]),\n new Uint32Array([0,0,0,0,0,0,0,2180577,0,0,0,0,0,2180609,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456]),\n new Uint32Array([2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2242529,2242561,2242593,2242625,2242657,2242689,2242721,2242753,2207937,2218177,2242785,2242817,2242849,2242882,2242945,2242977]),\n new Uint32Array([2118049,2105345,2118241,2105441,2118433,2118529,2118625,2118721,2118817,2200257,2200289,2191809,2200321,2200353,2200385,2200417]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2185505,6291456,2185537,6291456,2185569,6291456,2185601,6291456,2185633,6291456,2185665,6291456,2185697,6291456,2185729,6291456]),\n new Uint32Array([2231970,2232034,2232098,2232162,2232226,2232290,2232354,2232418,2232482,2232546,2232610,2232674,2232738,2232802,2232866,2232930]),\n new Uint32Array([2218625,2246402,2246466,2246530,2246594,2246657,2246689,2246689,2218657,2219681,2246721,2246753,2246785,2246818,2246881,2208481]),\n new Uint32Array([2197025,2197057,2197089,2197121,2197153,2197185,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2219137,2216961,2219169,2219201,2219233,2219265,2219297,2217025,2215041,2219329,2217057,2219361,2217089,2219393,2197153,2219426]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713]),\n new Uint32Array([2243522,2243585,2243617,2243649,2243681,2210113,2243713,2243746,2243810,2243874,2243937,2243970,2244033,2244065,2244097,2244129]),\n new Uint32Array([2178017,6291456,2178049,6291456,2178081,6291456,2178113,6291456,2178145,6291456,2178177,6291456,2178209,6291456,2178241,6291456]),\n new Uint32Array([10553858,2165314,10518722,6291456,10518818,0,10518914,2130690,10519010,2130786,10519106,2130882,10519202,2165378,10554050,2165506]),\n new Uint32Array([0,0,2135491,2135587,2135683,2135779,2135875,2135971,2135971,2136067,2136163,2136259,2136355,2136355,2136451,2136547]),\n new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2220033,2220033,2220065,2220065,2220065,2220065,2220097,2220097,2220097,2220097,2220129,2220129,2220129,2220129,2220161,2220161]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2100897,2100898,2100899,2150018,2100865,2100866,2100867,2100868,2150082,2108481,2109858,2109859,2105569,2105505,2098241,2105601]),\n new Uint32Array([2097217,2097505,2097505,2097505,2097505,2165570,2165570,2165634,2165634,2165698,2165698,2097858,2097858,0,0,2097152]),\n new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([10503843,10503939,10504035,10504131,10504227,10504323,10504419,10504515,10504611,10504707,10504803,10504899,10504995,10491140,10491268,0]),\n new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,2235297,2220769,2235329,2235361]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2222401,2222433,2222465,10531394,2222497,2222529,2222561,0,2222593,2222625,2222657,2222689,2222721,2222753,2222785,0]),\n new Uint32Array([2184481,6291456,2184513,6291456,2184545,6291456,2184577,6291456,2184609,6291456,2184641,6291456,2184673,6291456,2184705,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2105570,2156034,2126947,2156098,2153666,2127043,2127139,2156162,0,2127235,2156226,2156290,2156354,2156418,2127331,2127427]),\n new Uint32Array([2215905,2207041,2153185,2241569,2241601,2241633,2241665,2241697,2241730,2241793,2241825,2241857,2241889,2241921,2241954,2242017]),\n new Uint32Array([2203777,6291456,2203809,6291456,2203841,6291456,2203873,6291456,2203905,6291456,2173121,2180993,2181249,2203937,2181313,0]),\n new Uint32Array([2168577,6291456,2168609,6291456,2168641,6291456,2168673,6291456,2168705,6291456,2168737,6291456,2168769,6291456,2168801,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2210113,2195521,2210145,2210177,2210209,2210241,2210273,2210305,2210337,2210369,2210401,2210433,2210465,2210497,2210529,2210561]),\n new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([2228706,2228770,2228834,2228898,2228962,2229026,2229090,2229154,2229218,2229282,2229346,2229410,2229474,2229538,2229602,2229666]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,18874368,18874368,18874368,0,0]),\n new Uint32Array([2133089,2133281,2133281,2133281,2133281,2160577,2160577,2160577,2160577,2097441,2097441,2097441,2097441,2133857,2133857,2133857]),\n new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089]),\n new Uint32Array([2178529,6291456,2178561,6291456,2178593,6291456,2178625,6291456,2178657,6291456,2178689,6291456,2178721,6291456,2178753,6291456]),\n new Uint32Array([2221025,2221025,2221057,2221057,2159329,2159329,2159329,2159329,2097217,2097217,2158914,2158914,2158978,2158978,2159042,2159042]),\n new Uint32Array([2208161,2208193,2208225,2208257,2194433,2208289,2208321,2208353,2208385,2208417,2208449,2208481,2208513,2208545,2208577,2208609]),\n new Uint32Array([2169217,6291456,2169249,6291456,2169281,6291456,2169313,6291456,2169345,6291456,2169377,6291456,2169409,6291456,2169441,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2133187,2133283,2133283,2133379,2133475,2133571,2133667,2133667,2133763,2133859,2133955,2134051,2134147,2134147,2134243,2134339]),\n new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,0]),\n new Uint32Array([2193089,2193121,2193153,2193185,2117665,2117569,2193217,2193249,2193281,2193313,2193345,2193377,2193409,2193441,2193473,2193505]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2184225,6291456,2184257,6291456,2184289,6291456,2184321,6291456,2184353,6291456,2184385,6291456,2184417,6291456,2184449,6291456]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2100833,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2200801,2200833,2200865,0]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2181153,2105505,2181185,2167617,2180993]),\n new Uint32Array([2160002,2160066,2160130,2160194,2160258,2132066,2131010,2131106,2106018,2131618,2160322,2131298,2132034,2131938,2137410,2132226]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([2183617,6291456,2183649,6291456,2183681,6291456,2183713,6291456,2183745,6291456,2183777,6291456,2183809,6291456,2183841,6291456]),\n new Uint32Array([0,6291456,6291456,0,6291456,0,0,6291456,6291456,0,6291456,0,0,6291456,0,0]),\n new Uint32Array([2250977,2251009,2251041,2251073,2195009,2251106,2251169,2251201,2251233,2251265,2251297,2251330,2251394,2251457,2251489,2251521]),\n new Uint32Array([2205729,2205761,2205793,2205825,2205857,2205889,2205921,2205953,2205985,2206017,2206049,2206081,2206113,2206145,2206177,2206209]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2143170,2168993,6291456,2169025,6291456,2169057,6291456,2169089,6291456,2143234,2169121,6291456,2169153,6291456,2169185,6291456]),\n new Uint32Array([23068672,23068672,2190689,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2248706,2248769,2248801,2248833,2248865,2248897,2248929,2248962,2249026,2249090,2249154,2240705,2249217,2249249,2249281,2249313]),\n new Uint32Array([10485857,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10495394,6291456,2098209,6291456,6291456,2097152,6291456,10531394]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),\n new Uint32Array([6291456,2186977,6291456,6291456,6291456,6291456,6291456,10537858,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2209601,2209633,2209665,2209697,2209729,2209761,2209793,2209825,2209857,2209889,2209921,2209953,2209985,2210017,2210049,2210081]),\n new Uint32Array([10501539,10501635,10501731,10501827,10501923,10502019,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),\n new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2194561,2194593,2194625,2119777,2119873,2194657,2194689,2194721,2194753,2194785,2194817,2194849,2194881,2194913,2194945,2194977]),\n new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569]),\n new Uint32Array([2222818,2222882,2222946,2223010,2223074,2223138,2223202,2223266,2223330,2223394,2223458,2223522,2223586,2223650,2223714,2223778]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672]),\n new Uint32Array([0,2179553,2179585,2179617,2179649,2144001,2179681,2179713,2179745,2179777,2179809,2156705,2179841,2156833,2179873,2179905]),\n new Uint32Array([6291456,23068672,6291456,2145602,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,6291456,0,0]),\n new Uint32Array([2196513,2196545,2196577,2196609,2196641,2196673,2196705,2196737,2196769,2196801,2196833,2196865,2196897,2196929,2196961,2196993]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2177281,6291456,2177313,6291456,2177345,6291456,2177377,6291456,2177409,6291456,2177441,6291456,2177473,6291456,2177505,6291456]),\n new Uint32Array([2187137,2221473,2221505,2221537,2221569,6291456,6291456,10610209,10610241,10537986,10537986,10537986,10537986,10609857,10609857,10609857]),\n new Uint32Array([2243009,2243041,2216033,2243074,2243137,2243169,2243201,2219617,2243233,2243265,2243297,2243329,2243362,2243425,2243457,2243489]),\n new Uint32Array([10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,2097152,4194304,4194304,0,0]),\n new Uint32Array([2143042,6291456,2143106,2143106,2168833,6291456,2168865,6291456,6291456,2168897,6291456,2168929,6291456,2168961,6291456,2143170]),\n new Uint32Array([6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2204193,2204225,2204257,2204289,2204321,2204353,2204385,2204417,2204449,2204481,2204513,2204545,2204577,2204609,2204641,2204673]),\n new Uint32Array([2202753,6291456,2202785,6291456,2202817,6291456,2202849,6291456,2202881,6291456,2202913,6291456,2202945,6291456,2202977,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321]),\n new Uint32Array([2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842,2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842]),\n new Uint32Array([2253313,2253346,2253409,2253441,2253473,2253505,2253537,2253569,2253601,2253634,2219393,2253697,2253729,2253761,2253793,2253825]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([2162562,2162626,2131362,2162690,2159938,2160002,2162754,2162818,2160130,2162882,2160194,2160258,2160834,2160898,2161026,2161090]),\n new Uint32Array([2175361,2175393,2175425,2175457,2175489,2175521,2175553,2175585,2175617,2175649,2175681,2175713,2175745,2175777,2175809,2175841]),\n new Uint32Array([2253858,2253921,2253954,2254018,2254082,2196737,2254145,2196865,2254177,2254209,2254241,2254273,2197025,2254306,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2202113,2204129,2188705,2204161]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953]),\n new Uint32Array([2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209]),\n new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,0,2108417,0,2111713,2100897,2111905]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([2175425,2175489,2175809,2175905,2175937,2175937,2176193,2176417,2180865,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,2143298,2143298,2143298,2143362,2143362,2143362,2143426,2143426,2143426,2171105,6291456,2171137]),\n new Uint32Array([2120162,2120258,2151618,2151682,2151746,2151810,2151874,2151938,2152002,2120035,2120131,2120227,2152066,2120323,2152130,2120419]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2195361,2142433,2236065,2236097,2236129,2236161,2118241,2117473,2236193,2236225,2236257,2236289,0,0,0,0]),\n new Uint32Array([2189281,6291456,2189313,6291456,2189345,6291456,2189377,6291456,2189409,6291456,2189441,6291456,2189473,6291456,2189505,6291456]),\n new Uint32Array([6291456,6291456,2145922,6291456,6291456,6291456,6291456,2145986,6291456,6291456,6291456,6291456,2146050,6291456,6291456,6291456]),\n new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10502113,10562017,10610401,10502177,10610433,10538049]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,2186401,0,2186433,0,2186465,0,2186497]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,23068672,23068672]),\n new Uint32Array([0,0,2198241,2198273,2198305,2198337,2198369,2198401,0,0,2198433,2198465,2198497,0,0,0]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,0,23068672,23068672,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,2133281,2097505,2105889,0,2097697,2135777,2097633,2097441]),\n new Uint32Array([2197889,2197921,2197953,2197985,2198017,2198049,2198081,2198113,2198145,2198177,2198209,2198241,2198273,2198305,2198337,2198369]),\n new Uint32Array([2132514,2132610,2160386,2133090,2133186,2160450,2160514,2133282,2160578,2133570,2106178,2160642,2133858,2160706,2160770,2134146]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,6291456,23068672,23068672,6291456,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([2184737,6291456,2184769,6291456,2184801,6291456,2184833,6291456,2184865,6291456,2184897,6291456,2184929,6291456,2184961,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,2186753,6291456,6291456,6291456,6291456,2186785,2186817,2186849,2173569,2186881,10496355,10495395,10575521]),\n new Uint32Array([0,0,2097729,0,0,0,0,2106017,0,2097505,0,2097185,0,2135777,2097633,2097441]),\n new Uint32Array([2189537,6291456,2189569,6291456,2189601,6291456,2189633,6291456,2189665,6291456,2189697,6291456,2189729,6291456,2189761,6291456]),\n new Uint32Array([2202497,6291456,2202529,6291456,2202561,6291456,2202593,6291456,2202625,6291456,2202657,6291456,2202689,6291456,2202721,6291456]),\n new Uint32Array([2245217,2218369,2245249,2245282,2245345,2245377,2245410,2245474,2245537,2245569,2245601,2245633,2245665,2245665,2245697,2245729]),\n new Uint32Array([6291456,0,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,23068672,6291456,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2097281,2105921,2097729,2106081,2097377,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([2176641,6291456,2176673,6291456,2176705,6291456,2176737,6291456,2176769,6291456,2176801,6291456,2176833,6291456,2176865,6291456]),\n new Uint32Array([2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2174369,2174369,0,0,2100833,2100737]),\n new Uint32Array([2116513,2190817,2190849,2190881,2190913,2190945,2116609,2190977,2191009,2191041,2191073,2117185,2191105,2191137,2191169,2191201]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),\n new Uint32Array([2167617,2167649,2167681,2167713,2167745,2167777,2167809,6291456,2167841,2167873,2167905,2167937,2167969,2168001,2168033,4240130]),\n new Uint32Array([2165122,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122,2134562,2132162,2132834,2136866]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2186209,2186241,2186273,2186305,2186337,2186369,0,0]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([0,0,23068672,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([0,10537921,10610689,10610273,10610497,10610529,10610305,10610721,10489601,10489697,10610337,10575617,10554529,2221761,2197217,10496577]),\n new Uint32Array([2105473,2105569,2105601,2112289,0,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),\n new Uint32Array([2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481]),\n new Uint32Array([2125346,2153410,2153474,2127394,2153538,2153602,2153666,2153730,2105507,2105476,2153794,2153858,2153922,2153986,2154050,2105794]),\n new Uint32Array([2200449,2119681,2200481,2153313,2199873,2199905,2199937,2200513,2200545,2200577,2200609,2119105,2119201,2119297,2119393,2119489]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2175777,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2222273,2197217,2221473,2221505,2221089,2222305,2200865,2099681,2104481,2222337,2099905,2120737,2222369,2103713,2100225,2098785]),\n new Uint32Array([2201377,6291456,2201409,6291456,2201441,6291456,2201473,6291456,2201505,6291456,2201537,6291456,2201569,6291456,6291456,23068672]),\n new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),\n new Uint32Array([2200897,6291456,2200929,6291456,2200961,6291456,2200993,6291456,2201025,6291456,2180865,6291456,2201057,6291456,2201089,6291456]),\n new Uint32Array([0,0,0,0,0,23068672,23068672,0,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2161154,2161410,2138658,2161474,2161538,2097666,2097186,2097474,2162946,2132450,2163010,2163074,2136162,2163138,2161666,2161730]),\n new Uint32Array([2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953]),\n new Uint32Array([0,0,0,0,0,0,23068672,23068672,0,0,0,0,2145410,2145474,0,6291456]),\n new Uint32Array([2244161,2216065,2212769,2244193,2244225,2244257,2244290,2244353,2244385,2244417,2244449,2218273,2244481,2244514,2244577,2244609]),\n new Uint32Array([2125730,2125699,2125795,2125891,2125987,2154114,2154178,2154242,2154306,2154370,2154434,2154498,2126082,2126178,2126274,2126083]),\n new Uint32Array([2237665,2237697,2237697,2237697,2237730,2237793,2237825,2237857,2237890,2237953,2237985,2238017,2238049,2238081,2238113,2238145]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150146,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2214369,2238593,2238625,2238657,2238689,2238721,2238753,2238785,2238817,2238850,2238913,2238945,2238977,2235457,2239009,2239041]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([2252066,2252130,2252193,2252225,2252257,2252290,2252353,2252385,2252417,2252449,2252481,2252513,2252545,2252578,2252641,2252673]),\n new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,2197857]),\n new Uint32Array([2224866,2224930,2224994,2225058,2225122,2225186,2225250,2225314,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2219490,2219554,2219617,2219649,2219681,2219714,2219778,2219842,2219905,2219937,0,0,0,0,0,0]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),\n new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665]),\n new Uint32Array([2220161,2220161,2220193,2220193,2220193,2220193,2220225,2220225,2220225,2220225,2220257,2220257,2220257,2220257,2220289,2220289]),\n new Uint32Array([2192673,2192705,2192737,2192769,2192801,2192833,2192865,2118049,2192897,2117473,2117761,2192929,2192961,2192993,2193025,2193057]),\n new Uint32Array([2179297,6291456,2179329,6291456,2179361,6291456,2179393,6291456,2179425,6291456,2179457,6291456,2179489,6291456,2179521,6291456]),\n new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2235745,2235777,2193633,2235809,2235841,2235873,2235905,2235937,2235969,2116513,2116705,2236001,2200513,2199905,2200545,2236033]),\n new Uint32Array([2113153,2108481,2113345,2113441,2232993,2233025,0,0,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761]),\n new Uint32Array([2170593,6291456,2170625,6291456,2170657,6291456,2170689,2170721,6291456,2170753,6291456,6291456,2170785,6291456,2170817,2170849]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2166786,2166850,0,0,0,0]),\n new Uint32Array([23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,0]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2134562,2132162,2132834,2136866,2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058]),\n new Uint32Array([6291456,6291456,2098337,2101441,10531458,2153473,6291456,6291456,10531522,2100737,2108193,6291456,2106499,2106595,2106691,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2233122,2233186,2233250,2233314,2233378,2233442,2233506,2233570,2233634,2233698,2233762,2233826,2233890,2233954,2234018,2234082]),\n new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2205217,2205249,2205281,2205313,2205345,2205377,2205409,2205441,2205473,2205505,2205537,2205569,2205601,2205633,2205665,2205697]),\n new Uint32Array([6291456,0,6291456,0,0,0,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([2173601,2173761,2174081,2173569,2174241,2174113,2173953,6291456,2174305,6291456,2174337,6291456,2174369,6291456,2174401,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2152450,2152514,2099653,2104452,2099813,2122243,2099973,2152578,2122339,2122435,2122531,2122627,2122723,2104580,2122819,2152642]),\n new Uint32Array([2236385,2236417,2236449,2236482,2236545,2215425,2236577,2236609,2236641,2236673,2215457,2236705,2236737,2236770,2215489,2236833]),\n new Uint32Array([2163394,2159746,2163458,2131362,2163522,2160130,2163778,2132226,2163842,2132898,2163906,2161410,2138658,2097666,2136162,2163650]),\n new Uint32Array([2218721,2246913,2246946,2216385,2247010,2247074,2215009,2247137,2247169,2216481,2247201,2247233,2247266,2247330,2247330,0]),\n new Uint32Array([2129730,2129762,2129858,2129731,2129827,2156482,2156482,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0,0,0,0,6291456,0,0]),\n new Uint32Array([2203969,2204001,2181377,2204033,2204065,6291456,2204097,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2169473,6291456,2169505,6291456,2169537,6291456,2169569,6291456,2169601,6291456,2169633,6291456,2169665,6291456,2169697,6291456]),\n new Uint32Array([2141542,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220801,2220801,2220801,2220801,2220833,2220833,2220865,2220865,2220865,2220865,2220897,2220897,2220897,2220897,2139873,2139873]),\n new Uint32Array([0,0,0,0,0,23068672,23068672,0,0,0,0,0,0,0,6291456,0]),\n new Uint32Array([2214849,2218433,2218465,2218497,2218529,2218561,2214881,2218593,2218625,2218657,2218689,2218721,2218753,2216545,2218785,2218817]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058,2165122,2132802,2132706,2164866]),\n new Uint32Array([2207649,2207681,2207713,2207745,2207777,2207809,2207841,2207873,2207905,2207937,2207969,2208001,2208033,2208065,2208097,2208129]),\n new Uint32Array([2123683,2105092,2152706,2123779,2105220,2152770,2100453,2098755,2123906,2124002,2124098,2124194,2124290,2124386,2124482,2124578]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,0,0,0,0,0,0,0,10485857]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([10508163,10508259,10508355,10508451,2200129,2200161,2192737,2200193,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2203553,6291456,2203585,6291456,6291456,6291456,2203617,6291456,2203649,6291456,2203681,6291456,2203713,6291456,2203745,6291456]),\n new Uint32Array([18884449,18884065,23068672,18884417,18884034,18921185,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18874368]),\n new Uint32Array([2247393,2247426,2247489,2247521,2247553,2247586,2247649,2247681,2247713,2247745,2247777,2247810,2247873,2247905,2247937,2247969]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),\n new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,2160577,2133857,2235297,0,2235329,0]),\n new Uint32Array([2182593,6291456,2182625,6291456,2182657,6291456,2182689,6291456,2182721,6291456,2182753,6291456,2182785,6291456,2182817,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102402,2102403,6291456,2110050]),\n new Uint32Array([2149890,2108323,2149954,6291456,2113441,6291456,2149057,6291456,2113441,6291456,2105473,2167265,2111137,2105505,6291456,2108353]),\n new Uint32Array([2219105,2219137,2195233,2251554,2251617,2251649,2251681,2251713,2251746,2251810,2251873,2251905,2251937,2251970,2252033,2219169]),\n new Uint32Array([2203009,6291456,2203041,6291456,2203073,6291456,2203105,6291456,2203137,6291456,2203169,6291456,2203201,6291456,2203233,6291456]),\n new Uint32Array([2128195,2128291,2128387,2128483,2128579,2128675,2128771,2128867,2128963,2129059,2129155,2129251,2129347,2129443,2129539,2129635]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2140964,2141156,2140966,2141158,2141350]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2225378,2225442,2225506,2225570,2225634,2225698,2225762,2225826,2225890,2225954,2226018,2226082,2226146,2226210,2226274,2226338]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417]),\n new Uint32Array([2108353,2108417,0,2105601,2108193,2157121,2157313,2157377,2157441,2100897,6291456,2108419,2173953,2173633,2173633,2173953]),\n new Uint32Array([2111713,2173121,2111905,2098177,2173153,2173185,2173217,2113153,2113345,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2190753]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,2197249,6291456,2117377,2197281,2197313,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,23068672]),\n new Uint32Array([2173281,6291456,2173313,6291456,2173345,6291456,2173377,6291456,0,0,10532546,6291456,6291456,6291456,10562017,2173441]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),\n new Uint32Array([23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2159426,2159490,2159554,2159362,2159618,2159682,2139522,2136450,2159746,2159810,2159874,2130978,2131074,2131266,2131362,2159938]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2203233,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2203265,6291456,2203297,6291456,2203329,2203361,6291456]),\n new Uint32Array([6291456,6291456,2148418,2148482,2148546,0,6291456,2148610,2186529,2186561,2148417,2148545,2148482,10495778,2143969,10495778]),\n new Uint32Array([2134146,2139426,2160962,2134242,2161218,2161282,2161346,2161410,2138658,2134722,2134434,2134818,2097666,2097346,2097698,2105986]),\n new Uint32Array([2198881,2198913,2198945,2198977,2199009,2199041,2199073,2199105,2199137,2199169,2199201,2199233,2199265,2199297,2199329,2199361]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([10610561,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([2183873,6291456,2183905,6291456,2183937,6291456,2183969,6291456,2184001,6291456,2184033,6291456,2184065,6291456,2184097,6291456]),\n new Uint32Array([2244642,2244706,2244769,2244801,2218305,2244833,2244865,2244897,2244929,2244961,2244993,2245026,2245089,2245122,2245185,0]),\n new Uint32Array([6291456,6291456,2116513,2116609,2116705,2116801,2199873,2199905,2199937,2199969,2190913,2200001,2200033,2200065,2200097,2191009]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2180673,2180705,2180737,2180769,2180801,2180833,0,0]),\n new Uint32Array([2098081,2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150402]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,2145666,2145730,6291456,6291456]),\n new Uint32Array([2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665]),\n new Uint32Array([2187073,6291456,6291456,6291456,6291456,2098241,2098241,2108353,2100897,2111905,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102404,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2100612,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10485857]),\n new Uint32Array([2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),\n new Uint32Array([2217697,2217729,2217761,2217793,2217825,2217857,2217889,2217921,2217953,2215873,2217985,2215905,2218017,2218049,2218081,2218113]),\n new Uint32Array([2211233,2218849,2216673,2218881,2218913,2218945,2218977,2219009,2216833,2219041,2215137,2219073,2216865,2209505,2219105,2216897]),\n new Uint32Array([2240097,2240129,2240161,2240193,2240225,2240257,2240289,2240321,2240353,2240386,2240449,2240481,2240513,2240545,2207905,2240578]),\n new Uint32Array([6291456,6291456,2202273,6291456,2202305,6291456,2202337,6291456,2202369,6291456,2202401,6291456,2202433,6291456,2202465,6291456]),\n new Uint32Array([0,23068672,23068672,18923394,23068672,18923458,18923522,18884099,18923586,18884195,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2201121,6291456,2201153,6291456,2201185,6291456,2201217,6291456,2201249,6291456,2201281,6291456,2201313,6291456,2201345,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([2211041,2211073,2211105,2211137,2211169,2211201,2211233,2211265,2211297,2211329,2211361,2211393,2211425,2211457,2211489,2211521]),\n new Uint32Array([2181825,6291456,2181857,6291456,2181889,6291456,2181921,6291456,2181953,6291456,2181985,6291456,2182017,6291456,2182049,6291456]),\n new Uint32Array([2162337,2097633,2097633,2097633,2097633,2132705,2132705,2132705,2132705,2097153,2097153,2097153,2097153,2133089,2133089,2133089]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,2148545,6291456,2173473,6291456,2148865,6291456,2173505,6291456,2173537,6291456,2173569,6291456,2149121,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2207137,2207169,2207201,2207233,2207265,2207297,2207329,2207361,2207393,2207425,2207457,2207489,2207521,2207553,2207585,2207617]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,23068672,23068672,0,0,0,0,0,0]),\n new Uint32Array([2198401,2198433,2198465,2198497,0,2198529,2198561,2198593,2198625,2198657,2198689,2198721,2198753,2198785,2198817,2198849]),\n new Uint32Array([2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),\n new Uint32Array([2216385,2118721,2216417,2216449,2216481,2216513,2216545,2211233,2216577,2216609,2216641,2216673,2216705,2216737,2216737,2216769]),\n new Uint32Array([2216801,2216833,2216865,2216897,2216929,2216961,2216993,2215169,2217025,2217057,2217089,2217121,2217154,2217217,0,0]),\n new Uint32Array([2210593,2191809,2210625,2210657,2210689,2210721,2210753,2210785,2210817,2210849,2191297,2210881,2210913,2210945,2210977,2211009]),\n new Uint32Array([0,0,2105825,0,0,2111905,2105473,0,0,2112289,2108193,2112481,2112577,0,2098305,2108321]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,2097153,2134241,0,2132705,0,0,2131297,0,2133089,0,2133857,0,2220769,0,2235361]),\n new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,6291456,6291456,14680064]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2171873,6291456,2171905,6291456,2171937,6291456,2171969,6291456,2172001,6291456,2172033,6291456,2172065,6291456,2172097,6291456]),\n new Uint32Array([2220929,2220929,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2133857,2134145,2134145,2134145,2134145,2134241,2134241,2134241,2134241,2105889,2105889,2105889,2105889,2097185,2097185,2097185]),\n new Uint32Array([2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,10499619,10499715,10499811,10499907]),\n new Uint32Array([0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2144322,2144386,2144450,2144514,2144578,2144642,2144706,2144770]),\n new Uint32Array([23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456]),\n new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0,0,2111905,2105473,2105569]),\n new Uint32Array([2236321,2236353,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2152194,2121283,2103684,2103812,2097986,2098533,2097990,2098693,2098595,2098853,2099013,2103940,2121379,2121475,2121571,2104068]),\n new Uint32Array([2206241,2206273,2206305,2206337,2206369,2206401,2206433,2206465,2206497,2206529,2206561,2206593,2206625,2206657,2206689,2206721]),\n new Uint32Array([6291456,6291456,6291456,6291456,16777216,16777216,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,10538818,10538882,6291456,6291456,2150338]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2214369,2214401,2214433,2214465,2214497,2214529,2214561,2214593,2194977,2214625,2195073,2214657,2214689,2214721,6291456,6291456]),\n new Uint32Array([2097152,2097152,2097152,2097152,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2182081,6291456,2182113,6291456,2182145,6291456,2182177,6291456,2182209,6291456,2182241,6291456,2182273,6291456,2182305,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146881,2146945,2147009,2147073,2147137,2147201,2147265,2147329]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672]),\n new Uint32Array([0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2122915,2123011,2123107,2104708,2123203,2123299,2123395,2100133,2104836,2100290,2100293,2104962,2104964,2098052,2123491,2123587]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([6291456,2171169,6291456,2171201,6291456,2171233,6291456,2171265,6291456,2171297,6291456,2171329,6291456,6291456,2171361,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,2148994,2149058,2149122,0,6291456,2149186,2186945,2173537,2148993,2149121,2149058,10531458,10496066,0]),\n new Uint32Array([2195009,2195041,2195073,2195105,2195137,2195169,2195201,2195233,2195265,2195297,2195329,2195361,2195393,2195425,2195457,2195489]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,0,0,6291456,6291456]),\n new Uint32Array([2182849,6291456,2182881,6291456,2182913,6291456,2182945,6291456,2182977,6291456,2183009,6291456,2183041,6291456,2183073,6291456]),\n new Uint32Array([2211553,2210081,2211585,2211617,2211649,2211681,2211713,2211745,2211777,2211809,2209569,2211841,2211873,2211905,2211937,2211969]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2166594,2127298,2166658,2142978,2141827,2166722]),\n new Uint32Array([2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2185761,2185793,2185825,2185857,2185889,2185921,0,0]),\n new Uint32Array([6291456,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456]),\n new Uint32Array([0,0,0,2220961,2220961,2220961,2220961,2144193,2144193,2159201,2159201,2159265,2159265,2144194,2220993,2220993]),\n new Uint32Array([2192641,2235393,2235425,2152257,2116609,2235457,2235489,2200065,2235521,2235553,2235585,2212449,2235617,2235649,2235681,2235713]),\n new Uint32Array([2194049,2194081,2194113,2194145,2194177,2194209,2194241,2194273,2194305,2194337,2194369,2194401,2194433,2194465,2194497,2194529]),\n new Uint32Array([2196673,2208641,2208673,2208705,2208737,2208769,2208801,2208833,2208865,2208897,2208929,2208961,2208993,2209025,2209057,2209089]),\n new Uint32Array([2191681,2191713,2191745,2191777,2153281,2191809,2191841,2191873,2191905,2191937,2191969,2192001,2192033,2192065,2192097,2192129]),\n new Uint32Array([2230946,2231010,2231074,2231138,2231202,2231266,2231330,2231394,2231458,2231522,2231586,2231650,2231714,2231778,2231842,2231906]),\n new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2185953,2185985,2186017,2186049,2186081,2186113,2186145,2186177]),\n new Uint32Array([2139811,2139907,2097284,2105860,2105988,2106116,2106244,2097444,2097604,2097155,10485778,10486344,2106372,6291456,0,0]),\n new Uint32Array([2110051,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2172385,6291456,2172417,6291456,2172449,6291456,2172481,6291456,2172513,6291456,2172545,6291456,2172577,6291456,2172609,6291456]),\n new Uint32Array([0,0,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2249345,2249377,2249409,2249441,2249473,2249505,2249537,2249570,2210209,2249633,2249665,2249697,2249729,2249761,2249793,2216769]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2187169,2187201,2187233,2187265,2187297,2187329,2187361,2187393,2187425,2187457,2187489,2187521,2187553,2187585,2187617,2187649]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,6291456,6291456,0,0,0,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([2182337,6291456,2182369,6291456,2182401,6291456,2182433,6291456,2182465,6291456,2182497,6291456,2182529,6291456,2182561,6291456]),\n new Uint32Array([2138179,2138275,2138371,2138467,2134243,2134435,2138563,2138659,2138755,2138851,2138947,2139043,2138947,2138755,2139139,2139235]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2250498,2250562,2250625,2250657,2208321,2250689,2250721,2250753,2250785,2250817,2250849,2218945,2250881,2250913,2250945,0]),\n new Uint32Array([2170369,2105569,2098305,2108481,2173249,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2100897,2111905,2105473,2105569,2105601,0,2108193,0,0,0,2098305,2108321,2108289,2100865,2113153,2108481]),\n new Uint32Array([2100897,2100897,2105569,2105569,6291456,2112289,2149826,6291456,6291456,2112481,2112577,2098177,2098177,2098177,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456,6291456]),\n new Uint32Array([6291456,2169953,2169985,6291456,2170017,6291456,2170049,2170081,6291456,2170113,2170145,2170177,6291456,6291456,2170209,2170241]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220641,2220641,2220673,2220673,2220673,2220673,2220705,2220705,2220705,2220705,2220737,2220737,2220737,2220737,2220769,2220769]),\n new Uint32Array([2127650,2127746,2127842,2127938,2128034,2128130,2128226,2128322,2128418,2127523,2127619,2127715,2127811,2127907,2128003,2128099]),\n new Uint32Array([2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177]),\n new Uint32Array([0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2204705,2204737,2204769,2204801,2204833,2204865,2204897,2204929,2204961,2204993,2205025,2205057,2205089,2205121,2205153,2205185]),\n new Uint32Array([2176385,6291456,2176417,6291456,2176449,6291456,2176481,6291456,2176513,6291456,2176545,6291456,2176577,6291456,2176609,6291456]),\n new Uint32Array([2195521,2195553,2195585,2195617,2195649,2195681,2117857,2195713,2195745,2195777,2195809,2195841,2195873,2195905,2195937,2195969]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456]),\n new Uint32Array([2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113]),\n new Uint32Array([2131586,2132450,2135970,2135778,2161602,2136162,2163650,2161794,2135586,2163714,2137186,2131810,2160290,2135170,2097506,2159554]),\n new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,0,0,0,0]),\n new Uint32Array([2116513,2116609,2116705,2116801,2116897,2116993,2117089,2117185,2117281,2117377,2117473,2117569,2117665,2117761,2117857,2117953]),\n new Uint32Array([2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100802,2101154,2101282,2101410,2101538,2101666,2101794]),\n new Uint32Array([2100289,2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2098977,2150241,2150305]),\n new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,2109955,6291456,6291456,0,0,0,0]),\n new Uint32Array([18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,0,0]),\n new Uint32Array([2130979,2131075,2131075,2131171,2131267,2131363,2131459,2131555,2131651,2131651,2131747,2131843,2131939,2132035,2132131,2132227]),\n new Uint32Array([0,2177793,6291456,2177825,6291456,2177857,6291456,2177889,6291456,2177921,6291456,2177953,6291456,2177985,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2113345,0,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),\n new Uint32Array([2136643,2136739,2136835,2136931,2137027,2137123,2137219,2137315,2137411,2137507,2137603,2137699,2137795,2137891,2137987,2138083]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([2174433,6291456,2174465,6291456,2174497,6291456,2174529,6291456,2174561,6291456,2174593,6291456,2174625,6291456,2174657,6291456]),\n new Uint32Array([0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),\n new Uint32Array([10496547,10496643,2105505,2149698,6291456,10496739,10496835,2170273,6291456,2149762,2105825,2111713,2111713,2111713,2111713,2168673]),\n new Uint32Array([6291456,2143490,2143490,2143490,2171649,6291456,2171681,2171713,2171745,6291456,2171777,6291456,2171809,6291456,2171841,6291456]),\n new Uint32Array([2159106,2159106,2159170,2159170,2159234,2159234,2159298,2159298,2159298,2159362,2159362,2159362,2106401,2106401,2106401,2106401]),\n new Uint32Array([2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137]),\n new Uint32Array([2108417,2181217,2181249,2181281,2170433,2170401,2181313,2181345,2181377,2181409,2181441,2181473,2181505,2181537,2170529,2181569]),\n new Uint32Array([2218433,2245761,2245793,2245825,2245857,2245890,2245953,2245986,2209665,2246050,2246113,2246146,2246210,2246274,2246337,2246369]),\n new Uint32Array([2230754,2230818,2230882,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2184129,6291456,2184161,6291456,2184193,6291456,6291456,6291456,6291456,6291456,2146818,2183361,6291456,6291456,2142978,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2135170,2097506,2130691,2130787,2130883,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122]),\n new Uint32Array([2108515,2108611,2100740,2108707,2108803,2108899,2108995,2109091,2109187,2109283,2109379,2109475,2109571,2109667,2109763,2100738]),\n new Uint32Array([2102788,2102916,2103044,2120515,2103172,2120611,2120707,2098373,2103300,2120803,2120899,2120995,2103428,2103556,2121091,2121187]),\n new Uint32Array([2158082,2158146,0,2158210,2158274,0,2158338,2158402,2158466,2129922,2158530,2158594,2158658,2158722,2158786,2158850]),\n new Uint32Array([10499619,10499715,10499811,10499907,10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059]),\n new Uint32Array([2239585,2239618,2239681,2239713,0,2191969,2239745,2239777,2192033,2239809,2239841,2239874,2239937,2239970,2240033,2240065]),\n new Uint32Array([2252705,2252738,2252801,2252833,2252865,2252897,2252930,2252994,2253057,2253089,2253121,2253154,2253217,2253250,2219361,2219361]),\n new Uint32Array([2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,10538050,10538114,10538178,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2226402,2226466,2226530,2226594,2226658,2226722,2226786,2226850,2226914,2226978,2227042,2227106,2227170,2227234,2227298,2227362]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,2144066,2144130,2144194,2144258,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2124674,2124770,2123875,2123971,2124067,2124163,2124259,2124355,2124451,2124547,2124643,2124739,2124835,2124931,2125027,2125123]),\n new Uint32Array([2168065,6291456,2168097,6291456,2168129,6291456,2168161,6291456,2168193,6291456,2168225,6291456,2168257,6291456,2168289,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,2100610,2100611,6291456,2107842,2107843,6291456,6291456,6291456,6291456,10537922,6291456,10537986,6291456]),\n new Uint32Array([2174849,2174881,2174913,2174945,2174977,2175009,2175041,2175073,2175105,2175137,2175169,2175201,2175233,2175265,2175297,2175329]),\n new Uint32Array([2154562,2154626,2154690,2154754,2141858,2154818,2154882,2127298,2154946,2127298,2155010,2155074,2155138,2155202,2155266,2155202]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0]),\n new Uint32Array([2200641,2150786,2150850,2150914,2150978,2151042,2106562,2151106,2150562,2151170,2151234,2151298,2151362,2151426,2151490,2151554]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456]),\n new Uint32Array([2220289,2220289,2220321,2220321,2220321,2220321,2220353,2220353,2220353,2220353,2220385,2220385,2220385,2220385,2220417,2220417]),\n new Uint32Array([2155330,2155394,0,2155458,2155522,2155586,2105732,0,2155650,2155714,2155778,2125314,2155842,2155906,2126274,2155970]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0]),\n new Uint32Array([2097729,2106017,2106017,2106017,2106017,2131297,2131297,2131297,2131297,2106081,2106081,2162049,2162049,2105953,2105953,2162337]),\n new Uint32Array([2097185,2097697,2097697,2097697,2097697,2135777,2135777,2135777,2135777,2097377,2097377,2097377,2097377,2097601,2097601,2097217]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),\n new Uint32Array([2139331,2139427,2139523,2139043,2133571,2132611,2139619,2139715,0,0,0,0,0,0,0,0]),\n new Uint32Array([2174113,2174145,2100897,2098177,2108289,2100865,2173601,2173633,2173985,2174113,2174145,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,23068672,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,18923778,23068672,23068672,23068672,23068672,18923842,23068672,23068672,23068672,23068672,18923906,23068672,23068672,23068672]),\n new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,0,2133857,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2177537,6291456,2177569,6291456,2177601,6291456,2177633,6291456,2177665,6291456,2177697,6291456,2177729,6291456,2177761,6291456]),\n new Uint32Array([2212481,2212513,2212545,2212577,2197121,2212609,2212641,2212673,2212705,2212737,2212769,2212801,2212833,2212865,2212897,2212929]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2098241,2108353,2170209,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,6291456,2108193,2172417,2112481,2098177]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n];\nvar blockIdxes = new Uint16Array([616,616,565,147,161,411,330,2,131,131,328,454,241,408,86,86,696,113,285,350,325,301,473,214,639,232,447,64,369,598,124,672,567,223,621,154,107,86,86,86,86,86,86,505,86,68,634,86,218,218,218,218,486,218,218,513,188,608,216,86,217,463,668,85,700,360,184,86,86,86,647,402,153,10,346,718,662,260,145,298,117,1,443,342,138,54,563,86,240,572,218,70,387,86,118,460,641,602,86,86,306,218,86,692,86,86,86,86,86,162,707,86,458,26,86,218,638,86,86,86,86,86,65,449,86,86,306,183,86,58,391,667,86,157,131,131,131,131,86,433,131,406,31,218,247,86,86,693,218,581,351,86,438,295,69,462,45,126,173,650,14,295,69,97,168,187,641,78,523,390,69,108,287,664,173,219,83,295,69,108,431,426,173,694,412,115,628,52,257,398,641,118,501,121,69,579,151,423,173,620,464,121,69,382,151,476,173,27,53,121,86,594,578,226,173,86,632,130,86,96,228,268,641,622,563,86,86,21,148,650,131,131,321,43,144,343,381,531,131,131,178,20,86,399,156,375,164,541,30,60,715,198,92,118,131,131,86,86,306,407,86,280,457,196,488,358,131,131,244,86,86,143,86,86,86,86,86,667,563,86,86,86,86,86,86,86,86,86,86,86,86,86,336,363,86,86,336,86,86,380,678,67,86,86,86,678,86,86,86,512,86,307,86,708,86,86,86,86,86,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,563,307,86,86,86,86,86,104,450,337,86,720,86,32,450,397,86,86,86,587,218,558,708,708,293,708,86,86,86,86,86,694,205,86,8,86,86,86,86,549,86,667,697,697,679,86,458,460,86,86,650,86,708,543,86,86,86,245,86,86,86,140,218,127,708,708,458,197,131,131,131,131,500,86,86,483,251,86,306,510,515,86,722,86,86,86,65,201,86,86,483,580,470,86,86,86,368,131,131,131,694,114,110,555,86,86,123,721,163,142,713,418,86,317,675,209,218,218,218,371,545,592,629,490,603,199,46,320,525,680,310,279,388,111,42,252,593,607,235,617,410,377,50,548,135,356,17,520,189,116,392,600,349,332,482,699,690,535,119,106,451,71,152,667,131,218,218,265,671,637,492,504,533,683,269,269,658,86,86,86,86,86,86,86,86,86,491,619,86,86,6,86,86,86,86,86,86,86,86,86,86,86,229,86,86,86,86,86,86,86,86,86,86,86,86,667,86,86,171,131,118,131,656,206,234,571,89,334,670,246,311,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,534,86,86,86,86,86,86,82,86,86,86,86,86,430,86,86,86,86,86,86,86,86,86,599,86,324,86,470,69,640,264,131,626,101,174,86,86,667,233,105,73,374,394,221,204,84,28,326,86,86,471,86,86,86,109,573,86,171,200,200,200,200,218,218,86,86,86,86,460,131,131,131,86,506,86,86,86,86,86,220,404,34,614,47,442,305,25,612,338,601,648,7,344,255,131,131,51,86,312,507,563,86,86,86,86,588,86,86,86,86,86,530,511,86,458,3,435,384,556,522,230,527,86,118,86,86,717,86,137,273,79,181,484,23,93,112,655,249,417,703,370,87,98,313,684,585,155,465,596,481,695,18,416,428,61,701,706,282,643,495,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,86,86,86,171,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,650,131,422,542,420,263,24,172,86,86,86,86,86,566,86,86,132,540,395,353,494,519,19,485,284,472,131,131,131,16,714,86,211,708,86,86,86,694,698,86,86,483,704,708,218,272,86,86,120,86,159,478,86,307,247,86,86,663,597,459,627,667,86,86,277,455,39,302,86,250,86,86,86,271,99,452,306,281,329,400,200,86,86,362,549,352,646,461,323,586,86,86,4,708,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,717,86,518,86,86,650,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,125,554,480,300,613,72,333,288,561,544,604,48,719,91,169,176,590,224,76,191,29,559,560,231,537,166,477,538,256,437,131,131,469,167,40,0,685,266,441,705,239,642,475,568,640,610,299,673,517,318,385,22,202,180,179,359,424,215,90,66,521,653,467,682,453,409,479,88,131,661,35,303,15,262,666,630,712,131,131,618,659,175,218,195,347,193,227,261,150,165,709,546,294,569,710,270,413,376,524,55,242,38,419,529,170,657,3,304,122,379,278,131,651,86,67,576,458,458,131,131,86,86,86,86,86,86,86,118,309,86,86,547,86,86,86,86,667,650,664,131,131,86,86,56,131,131,131,131,131,131,131,131,86,307,86,86,86,664,238,650,86,86,717,86,118,86,86,315,86,59,86,86,574,549,131,131,340,57,436,86,86,86,86,86,86,458,708,499,691,62,86,650,86,86,694,86,86,86,319,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,86,549,694,131,131,131,131,131,131,131,131,131,77,86,86,139,86,502,86,86,86,667,595,131,131,131,86,12,86,13,86,609,131,131,131,131,86,86,86,625,86,669,86,86,182,129,86,5,694,104,86,86,86,86,131,131,86,86,386,171,86,86,86,345,86,324,86,589,86,213,36,131,131,131,131,131,86,86,86,86,104,131,131,131,141,290,80,677,86,86,86,267,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,515,86,86,33,136,669,86,711,515,86,86,550,640,86,104,708,515,86,159,372,717,86,86,444,515,86,86,663,37,86,563,460,86,390,624,702,131,131,131,131,389,59,708,86,86,341,208,708,635,295,69,108,431,508,100,190,131,131,131,131,131,131,131,131,86,86,86,649,516,660,131,131,86,86,86,218,631,708,131,131,131,131,131,131,131,131,131,131,86,86,341,575,238,514,131,131,86,86,86,218,291,708,307,131,86,86,306,367,708,131,131,131,86,378,697,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,615,253,86,86,86,292,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,104,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,69,86,341,553,549,86,307,86,86,645,275,455,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,708,131,131,131,131,131,131,86,86,86,86,86,86,667,460,86,86,86,86,86,86,86,86,86,86,86,86,717,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,104,86,667,459,131,131,131,131,131,131,86,458,225,86,86,86,516,549,11,390,405,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,460,44,218,197,711,515,131,131,131,131,664,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,118,307,104,286,591,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,681,86,86,75,185,314,582,86,358,496,474,86,104,131,86,86,86,86,146,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,171,86,640,131,131,131,131,131,131,131,131,246,503,689,339,674,81,258,415,439,128,562,366,414,246,503,689,583,222,557,316,636,665,186,355,95,670,246,503,689,339,674,557,258,415,439,186,355,95,670,246,503,689,446,644,536,652,331,532,335,440,274,421,297,570,74,425,364,425,606,552,403,509,134,365,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,218,218,218,498,218,218,577,627,551,497,572,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,553,354,236,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,296,455,131,131,456,243,103,86,41,459,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,9,276,158,716,393,564,383,489,401,654,210,654,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,650,86,86,86,86,86,86,717,667,563,563,563,86,549,102,686,133,246,605,86,448,86,86,207,307,131,131,131,641,86,177,611,445,373,194,584,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,307,171,86,86,86,86,86,86,86,717,86,86,86,86,86,460,131,131,650,86,86,86,694,708,86,86,694,86,458,131,131,131,131,131,131,667,694,289,650,667,131,131,86,640,131,131,664,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,460,86,86,86,86,86,86,86,86,86,86,86,86,86,458,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,466,203,149,429,94,432,160,687,539,63,237,283,192,248,348,259,427,526,396,676,254,468,487,212,327,623,49,633,322,493,434,688,357,361,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131]);\nvar mappingStr = \"صلى الله عليه وسلمجل جلالهキロメートルrad∕s2エスクードキログラムキロワットグラムトンクルゼイロサンチームパーセントピアストルファラッドブッシェルヘクタールマンションミリバールレントゲン′′′′1⁄10viii(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫(오전)(오후)アパートアルファアンペアイニングエーカーカラットカロリーキュリーギルダークローネサイクルシリングバーレルフィートポイントマイクロミクロンメガトンリットルルーブル株式会社kcalm∕s2c∕kgاكبرمحمدصلعمرسولریال1⁄41⁄23⁄4 ̈́ྲཱྀླཱྀ ̈͂ ̓̀ ̓́ ̓͂ ̔̀ ̔́ ̔͂ ̈̀‵‵‵a/ca/sc/oc/utelfax1⁄71⁄91⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83⁄85⁄87⁄8xii0⁄3∮∮∮(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)::====(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)pte10月11月12月ergltdアールインチウォンオンスオームカイリガロンガンマギニーケースコルナコーポセンチダースノットハイツパーツピクルフランペニヒヘルツペンスページベータボルトポンドホールホーンマイルマッハマルクヤードヤールユアンルピー10点11点12点13点14点15点16点17点18点19点20点21点22点23点24点hpabardm2dm3khzmhzghzthzmm2cm2km2mm3cm3km3kpampagpalogmilmolppmv∕ma∕m10日11日12日13日14日15日16日17日18日19日20日21日22日23日24日25日26日27日28日29日30日31日galffifflשּׁשּׂ ٌّ ٍّ َّ ُّ ِّ ّٰـَّـُّـِّتجمتحجتحمتخمتمجتمحتمخجمححميحمىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمىفخمقمحقمملحملحيلحىلججلخملمحمحجمحيمجحمجممخممجخهمجهممنحمنحىنجمنجىنمينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمينحيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلے𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯〔s〕ppv〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕 ̄ ́ ̧ssi̇ijl·ʼndžljnjdz ̆ ̇ ̊ ̨ ̃ ̋ ιեւاٴوٴۇٴيٴक़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀླྀྒྷྜྷྡྷྦྷྫྷྐྵaʾἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧιὰιαιάιᾶι ͂ὴιηιήιῆιὼιωιώιῶι ̳!! ̅???!!?rs°c°fnosmtmivix⫝̸ ゙ ゚よりコト333435참고주의363738394042444546474849503月4月5月6月7月8月9月hgevギガデシドルナノピコビルペソホンリラレムdaauovpciu平成昭和大正明治naμakakbmbgbpfnfμfμgmgμlmldlklfmnmμmpsnsμsmsnvμvkvpwnwμwmwkwkωmωbqcccddbgyhainkkktlnlxphprsrsvwbstմնմեմիվնմխיִײַשׁשׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּתּוֹבֿכֿפֿאלئائەئوئۇئۆئۈئېئىئجئحئمئيبجبمبىبيتىتيثجثمثىثيخحضجضمطحظمغجفجفحفىفيقحقىقيكاكجكحكخكلكىكينخنىنيهجهىهييىذٰرٰىٰئرئزئنبزبنترتزتنثرثزثنمانرنزننيريزئخئهبهتهصخنههٰثهسهشهطىطيعىعيغىغيسىسيشىشيصىصيضىضيشخشرسرصرضراً ًـًـّ ْـْلآلألإ𝅗𝅥0,1,2,3,4,5,6,7,8,9,wzhvsdwcmcmddjほかココàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįĵķĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷÿźżɓƃƅɔƈɖɗƌǝəɛƒɠɣɩɨƙɯɲɵơƣƥʀƨʃƭʈưʊʋƴƶʒƹƽǎǐǒǔǖǘǚǜǟǡǣǥǧǩǫǭǯǵƕƿǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟƞȣȥȧȩȫȭȯȱȳⱥȼƚⱦɂƀʉʌɇɉɋɍɏɦɹɻʁʕͱͳʹͷ;ϳέίόύβγδεζθκλνξοπρστυφχψϊϋϗϙϛϝϟϡϣϥϧϩϫϭϯϸϻͻͼͽѐёђѓєѕіїјљњћќѝўџабвгдежзийклмнопрстуфхцчшщъыьэюяѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯաբգդզէըթժլծկհձղճյշոչպջռստրցփքօֆ་ⴧⴭნᏰᏱᏲᏳᏴᏵꙋɐɑᴂɜᴖᴗᴝᴥɒɕɟɡɥɪᵻʝɭᶅʟɱɰɳɴɸʂƫᴜʐʑḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿἐἑἒἓἔἕἰἱἲἳἴἵἶἷὀὁὂὃὄὅὑὓὕὗᾰᾱὲΐῐῑὶΰῠῡὺῥ`ὸ‐+−∑〈〉ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞⱡɫᵽɽⱨⱪⱬⱳⱶȿɀⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳬⳮⳳⵡ母龟丨丶丿乙亅亠人儿入冂冖冫几凵刀力勹匕匚匸卜卩厂厶又口囗士夂夊夕女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无曰欠止歹殳毋比毛氏气爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠.〒卄卅ᄁᆪᆬᆭᄄᆰᆱᆲᆳᆴᆵᄚᄈᄡᄊ짜ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄩᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᇱᇲᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ上中下甲丙丁天地問幼箏우秘男適優印注項写左右医宗夜テヌモヨヰヱヲꙁꙃꙅꙇꙉꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛꜣꜥꜧꜩꜫꜭꜯꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝺꝼᵹꝿꞁꞃꞅꞇꞌꞑꞓꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩɬʞʇꭓꞵꞷꬷꭒᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯ豈更賈滑串句契喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧蘆虜路露魯鷺碌祿綠菉錄論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏諾丹寧怒率異北磻便復不泌數索參塞省葉說殺沈拾若掠略亮兩凉梁糧良諒量勵呂廬旅濾礪閭驪麗黎曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂廉念捻殮簾獵令囹嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料燎療蓼遼暈阮劉杻柳流溜琉留硫紐類戮陸倫崙淪輪律慄栗隆利吏履易李梨泥理痢罹裏裡離匿溺吝燐璘藺隣鱗麟林淋臨笠粒狀炙識什茶刺切度拓糖宅洞暴輻降廓兀嗀塚晴凞猪益礼神祥福靖精蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層悔慨憎懲敏既暑梅海渚漢煮爫琢碑祉祈祐祖禍禎穀突節縉繁署者臭艹著褐視謁謹賓贈辶難響頻恵𤋮舘並况全侀充冀勇勺啕喙嗢墳奄奔婢嬨廒廙彩徭惘慎愈慠戴揄搜摒敖望杖滛滋瀞瞧爵犯瑱甆画瘝瘟盛直睊着磌窱类絛缾荒華蝹襁覆調請諭變輸遲醙鉶陼韛頋鬒𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎עםٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھۓڭۋۅۉ、〖〗—–_{}【】《》「」『』[]#&*-<>\\\\$%@ءؤة\\\"'^|~⦅⦆・ゥャ¢£¬¦¥₩│←↑→↓■○𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻𐳀𐳁𐳂𐳃𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟ıȷ∇∂𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃ٮڡٯ字双多解交映無前後再新初終販声吹演投捕遊指禁空合満申割営配得可丽丸乁𠄢你侻倂偺備像㒞𠘺兔兤具𠔜㒹內𠕋冗冤仌冬𩇟刃㓟刻剆剷㔕包匆卉博即卽卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善喫喳嗂圖圗噑噴壮城埴堍型堲報墬𡓤売壷夆夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾𡧈寃寘寳𡬘寿将㞁屠峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶𪎒𢌱舁弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜𢛔惇慈慌慺憲憤憯懞戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敬𣀊旣書晉㬙㬈㫤冒冕最暜肭䏙朡杞杓𣏃㭉柺枅桒𣑭梎栟椔楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殻𣪍𡴋𣫺汎𣲼沿泍汧洖派浩浸涅𣴞洴港湮㴳滇𣻑淹潮𣽞𣾎濆瀹瀛㶖灊災灷炭𠔥煅𤉣熜爨牐𤘈犀犕𤜵𤠔獺王㺬玥㺸瑇瑜璅瓊㼛甤𤰶甾𤲒𢆟瘐𤾡𤾸𥁄㿼䀈𥃳𥃲𥄙𥄳眞真瞋䁆䂖𥐝硎䃣𥘦𥚚𥛅秫䄯穊穏𥥼𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舄辞䑫芑芋芝劳花芳芽苦𦬼茝荣莭茣莽菧荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虧虩蚩蚈蜎蛢蜨蝫螆蟡蠁䗹衠𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頩𩖶飢䬳餩馧駂駾䯎𩬰鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑䵖黾鼅鼏鼖𪘀\";\n\nfunction mapChar(codePoint) {\n if (codePoint >= 0x30000) {\n // High planes are special cased.\n if (codePoint >= 0xE0100 && codePoint <= 0xE01EF)\n return 18874368;\n return 0;\n }\n return blocks[blockIdxes[codePoint >> 4]][codePoint & 15];\n}\n\nreturn {\n mapStr: mappingStr,\n mapChar: mapChar\n};\n}));\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","(function(root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define(['punycode', './idna-map'], function(punycode, idna_map) {\n return factory(punycode, idna_map);\n });\n }\n else if (typeof exports === 'object') {\n module.exports = factory(require('punycode'), require('./idna-map'));\n }\n else {\n root.uts46 = factory(root.punycode, root.idna_map);\n }\n}(this, function(punycode, idna_map) {\n\n function mapLabel(label, useStd3ASCII, transitional) {\n var mapped = [];\n var chars = punycode.ucs2.decode(label);\n for (var i = 0; i < chars.length; i++) {\n var cp = chars[i];\n var ch = punycode.ucs2.encode([chars[i]]);\n var composite = idna_map.mapChar(cp);\n var flags = (composite >> 23);\n var kind = (composite >> 21) & 3;\n var index = (composite >> 5) & 0xffff;\n var length = composite & 0x1f;\n var value = idna_map.mapStr.substr(index, length);\n if (kind === 0 || (useStd3ASCII && (flags & 1))) {\n throw new Error(\"Illegal char \" + ch);\n }\n else if (kind === 1) {\n mapped.push(value);\n }\n else if (kind === 2) {\n mapped.push(transitional ? value : ch);\n }\n /* istanbul ignore next */\n else if (kind === 3) {\n mapped.push(ch);\n }\n }\n\n var newLabel = mapped.join(\"\").normalize(\"NFC\");\n return newLabel;\n }\n\n function process(domain, transitional, useStd3ASCII) {\n /* istanbul ignore if */\n if (useStd3ASCII === undefined)\n useStd3ASCII = false;\n var mappedIDNA = mapLabel(domain, useStd3ASCII, transitional);\n\n // Step 3. Break\n var labels = mappedIDNA.split(\".\");\n\n // Step 4. Convert/Validate\n labels = labels.map(function(label) {\n if (label.startsWith(\"xn--\")) {\n label = punycode.decode(label.substring(4));\n validateLabel(label, useStd3ASCII, false);\n }\n else {\n validateLabel(label, useStd3ASCII, transitional);\n }\n return label;\n });\n\n return labels.join(\".\");\n }\n\n function validateLabel(label, useStd3ASCII, transitional) {\n // 2. The label must not contain a U+002D HYPHEN-MINUS character in both the\n // third position and fourth positions.\n if (label[2] === '-' && label[3] === '-')\n throw new Error(\"Failed to validate \" + label);\n\n // 3. The label must neither begin nor end with a U+002D HYPHEN-MINUS\n // character.\n if (label.startsWith('-') || label.endsWith('-'))\n throw new Error(\"Failed to validate \" + label);\n\n // 4. The label must not contain a U+002E ( . ) FULL STOP.\n // this should nerver happen as label is chunked internally by this character\n /* istanbul ignore if */\n if (label.includes('.'))\n throw new Error(\"Failed to validate \" + label);\n\n if (mapLabel(label, useStd3ASCII, transitional) !== label)\n throw new Error(\"Failed to validate \" + label);\n\n // 5. The label must not begin with a combining mark, that is:\n // General_Category=Mark.\n var ch = label.codePointAt(0);\n if (idna_map.mapChar(ch) & (0x2 << 23))\n throw new Error(\"Label contains illegal character: \" + ch);\n }\n\n function toAscii(domain, options) {\n if (options === undefined)\n options = {};\n var transitional = 'transitional' in options ? options.transitional : true;\n var useStd3ASCII = 'useStd3ASCII' in options ? options.useStd3ASCII : false;\n var verifyDnsLength = 'verifyDnsLength' in options ? options.verifyDnsLength : false;\n var labels = process(domain, transitional, useStd3ASCII).split('.');\n var asciiLabels = labels.map(punycode.toASCII);\n var asciiString = asciiLabels.join('.');\n var i;\n if (verifyDnsLength) {\n if (asciiString.length < 1 || asciiString.length > 253) {\n throw new Error(\"DNS name has wrong length: \" + asciiString);\n }\n for (i = 0; i < asciiLabels.length; i++) {//for .. of replacement\n var label = asciiLabels[i];\n if (label.length < 1 || label.length > 63)\n throw new Error(\"DNS label has wrong length: \" + label);\n }\n }\n return asciiString;\n }\n\n function toUnicode(domain, options) {\n if (options === undefined)\n options = {};\n var useStd3ASCII = 'useStd3ASCII' in options ? options.useStd3ASCII : false;\n return process(domain, false, useStd3ASCII);\n }\n\n return {\n toUnicode: toUnicode,\n toAscii: toAscii,\n };\n}));\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\n}\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar gOPD = require('gopd');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\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\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n */\n\nmodule.exports = function createAsyncMiddleware (asyncMiddleware) {\n return (req, res, next, end) => {\n\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise\n const nextPromise = new Promise((resolve) => {\n resolveNextPromise = resolve\n })\n\n let returnHandlerCallback, nextWasCalled\n\n const asyncNext = async () => {\n\n nextWasCalled = true\n\n next((callback) => { // eslint-disable-line callback-return\n returnHandlerCallback = callback\n resolveNextPromise()\n })\n await nextPromise\n }\n\n asyncMiddleware(req, res, asyncNext)\n .then(async () => {\n if (nextWasCalled) {\n await nextPromise // we must wait until the return handler is called\n returnHandlerCallback(null)\n } else {\n end(null)\n }\n })\n .catch((error) => {\n if (returnHandlerCallback) {\n returnHandlerCallback(error)\n } else {\n end(error)\n }\n })\n }\n}\n","module.exports = function createScaffoldMiddleware (handlers) {\n return (req, res, next, end) => {\n const handler = handlers[req.method]\n // if no handler, return\n if (handler === undefined) {\n return next()\n }\n // if handler is fn, call as middleware\n if (typeof handler === 'function') {\n return handler(req, res, next, end)\n }\n // if handler is some other value, use as result\n res.result = handler\n return end()\n }\n}\n","module.exports = IdIterator\n\nfunction IdIterator(opts){\n opts = opts || {}\n var max = opts.max || Number.MAX_SAFE_INTEGER\n var idCounter = typeof opts.start !== 'undefined' ? opts.start : Math.floor(Math.random() * max)\n\n return function createRandomId () {\n idCounter = idCounter % max\n return idCounter++\n }\n\n}","'use strict';\n\nvar json = typeof JSON !== 'undefined' ? JSON : require('jsonify');\n\nvar isArray = Array.isArray || function (x) {\n\treturn {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n\tvar has = Object.prototype.hasOwnProperty || function () { return true; };\n\tvar keys = [];\n\tfor (var key in obj) {\n\t\tif (has.call(obj, key)) { keys.push(key); }\n\t}\n\treturn keys;\n};\n\nmodule.exports = function (obj, opts) {\n\tif (!opts) { opts = {}; }\n\tif (typeof opts === 'function') { opts = { cmp: opts }; }\n\tvar space = opts.space || '';\n\tif (typeof space === 'number') { space = Array(space + 1).join(' '); }\n\tvar cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;\n\tvar replacer = opts.replacer || function (key, value) { return value; };\n\n\tvar cmp = opts.cmp && (function (f) {\n\t\treturn function (node) {\n\t\t\treturn function (a, b) {\n\t\t\t\tvar aobj = { key: a, value: node[a] };\n\t\t\t\tvar bobj = { key: b, value: node[b] };\n\t\t\t\treturn f(aobj, bobj);\n\t\t\t};\n\t\t};\n\t}(opts.cmp));\n\n\tvar seen = [];\n\treturn (function stringify(parent, key, node, level) {\n\t\tvar indent = space ? '\\n' + new Array(level + 1).join(space) : '';\n\t\tvar colonSeparator = space ? ': ' : ':';\n\n\t\tif (node && node.toJSON && typeof node.toJSON === 'function') {\n\t\t\tnode = node.toJSON();\n\t\t}\n\n\t\tnode = replacer.call(parent, key, node);\n\n\t\tif (node === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof node !== 'object' || node === null) {\n\t\t\treturn json.stringify(node);\n\t\t}\n\t\tif (isArray(node)) {\n\t\t\tvar out = [];\n\t\t\tfor (var i = 0; i < node.length; i++) {\n\t\t\t\tvar item = stringify(node, i, node[i], level + 1) || json.stringify(null);\n\t\t\t\tout.push(indent + space + item);\n\t\t\t}\n\t\t\treturn '[' + out.join(',') + indent + ']';\n\t\t}\n\n\t\tif (seen.indexOf(node) !== -1) {\n\t\t\tif (cycles) { return json.stringify('__cycle__'); }\n\t\t\tthrow new TypeError('Converting circular structure to JSON');\n\t\t} else { seen.push(node); }\n\n\t\tvar keys = objectKeys(node).sort(cmp && cmp(node));\n\t\tvar out = [];\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tvar value = stringify(node, key, node[key], level + 1);\n\n\t\t\tif (!value) { continue; }\n\n\t\t\tvar keyValue = json.stringify(key)\n\t\t\t\t\t+ colonSeparator\n\t\t\t\t\t+ value;\n\n\t\t\tout.push(indent + space + keyValue);\n\t\t}\n\t\tseen.splice(seen.indexOf(node), 1);\n\t\treturn '{' + out.join(',') + indent + '}';\n\n\t}({ '': obj }, '', obj, 0));\n};\n","'use strict';\n\nexports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n","'use strict';\n\nvar at; // The index of the current character\nvar ch; // The current character\nvar escapee = {\n\t'\"': '\"',\n\t'\\\\': '\\\\',\n\t'/': '/',\n\tb: '\\b',\n\tf: '\\f',\n\tn: '\\n',\n\tr: '\\r',\n\tt: '\\t'\n};\nvar text;\n\n// Call error when something is wrong.\nfunction error(m) {\n\tthrow {\n\t\tname: 'SyntaxError',\n\t\tmessage: m,\n\t\tat: at,\n\t\ttext: text\n\t};\n}\n\nfunction next(c) {\n\t// If a c parameter is provided, verify that it matches the current character.\n\tif (c && c !== ch) {\n\t\terror(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n\t}\n\n\t// Get the next character. When there are no more characters, return the empty string.\n\n\tch = text.charAt(at);\n\tat += 1;\n\treturn ch;\n}\n\nfunction number() {\n\t// Parse a number value.\n\tvar num;\n\tvar str = '';\n\n\tif (ch === '-') {\n\t\tstr = '-';\n\t\tnext('-');\n\t}\n\twhile (ch >= '0' && ch <= '9') {\n\t\tstr += ch;\n\t\tnext();\n\t}\n\tif (ch === '.') {\n\t\tstr += '.';\n\t\twhile (next() && ch >= '0' && ch <= '9') {\n\t\t\tstr += ch;\n\t\t}\n\t}\n\tif (ch === 'e' || ch === 'E') {\n\t\tstr += ch;\n\t\tnext();\n\t\tif (ch === '-' || ch === '+') {\n\t\t\tstr += ch;\n\t\t\tnext();\n\t\t}\n\t\twhile (ch >= '0' && ch <= '9') {\n\t\t\tstr += ch;\n\t\t\tnext();\n\t\t}\n\t}\n\tnum = Number(str);\n\tif (!isFinite(num)) {\n\t\terror('Bad number');\n\t}\n\treturn num;\n}\n\nfunction string() {\n\t// Parse a string value.\n\tvar hex;\n\tvar i;\n\tvar str = '';\n\tvar uffff;\n\n\t// When parsing for string values, we must look for \" and \\ characters.\n\tif (ch === '\"') {\n\t\twhile (next()) {\n\t\t\tif (ch === '\"') {\n\t\t\t\tnext();\n\t\t\t\treturn str;\n\t\t\t} else if (ch === '\\\\') {\n\t\t\t\tnext();\n\t\t\t\tif (ch === 'u') {\n\t\t\t\t\tuffff = 0;\n\t\t\t\t\tfor (i = 0; i < 4; i += 1) {\n\t\t\t\t\t\thex = parseInt(next(), 16);\n\t\t\t\t\t\tif (!isFinite(hex)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuffff = (uffff * 16) + hex;\n\t\t\t\t\t}\n\t\t\t\t\tstr += String.fromCharCode(uffff);\n\t\t\t\t} else if (typeof escapee[ch] === 'string') {\n\t\t\t\t\tstr += escapee[ch];\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstr += ch;\n\t\t\t}\n\t\t}\n\t}\n\terror('Bad string');\n}\n\n// Skip whitespace.\nfunction white() {\n\twhile (ch && ch <= ' ') {\n\t\tnext();\n\t}\n}\n\n// true, false, or null.\nfunction word() {\n\tswitch (ch) {\n\t\tcase 't':\n\t\t\tnext('t');\n\t\t\tnext('r');\n\t\t\tnext('u');\n\t\t\tnext('e');\n\t\t\treturn true;\n\t\tcase 'f':\n\t\t\tnext('f');\n\t\t\tnext('a');\n\t\t\tnext('l');\n\t\t\tnext('s');\n\t\t\tnext('e');\n\t\t\treturn false;\n\t\tcase 'n':\n\t\t\tnext('n');\n\t\t\tnext('u');\n\t\t\tnext('l');\n\t\t\tnext('l');\n\t\t\treturn null;\n\t\tdefault:\n\t\t\terror(\"Unexpected '\" + ch + \"'\");\n\t}\n}\n\n// Parse an array value.\nfunction array() {\n\tvar arr = [];\n\n\tif (ch === '[') {\n\t\tnext('[');\n\t\twhite();\n\t\tif (ch === ']') {\n\t\t\tnext(']');\n\t\t\treturn arr; // empty array\n\t\t}\n\t\twhile (ch) {\n\t\t\tarr.push(value()); // eslint-disable-line no-use-before-define\n\t\t\twhite();\n\t\t\tif (ch === ']') {\n\t\t\t\tnext(']');\n\t\t\t\treturn arr;\n\t\t\t}\n\t\t\tnext(',');\n\t\t\twhite();\n\t\t}\n\t}\n\terror('Bad array');\n}\n\n// Parse an object value.\nfunction object() {\n\tvar key;\n\tvar obj = {};\n\n\tif (ch === '{') {\n\t\tnext('{');\n\t\twhite();\n\t\tif (ch === '}') {\n\t\t\tnext('}');\n\t\t\treturn obj; // empty object\n\t\t}\n\t\twhile (ch) {\n\t\t\tkey = string();\n\t\t\twhite();\n\t\t\tnext(':');\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\terror('Duplicate key \"' + key + '\"');\n\t\t\t}\n\t\t\tobj[key] = value(); // eslint-disable-line no-use-before-define\n\t\t\twhite();\n\t\t\tif (ch === '}') {\n\t\t\t\tnext('}');\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tnext(',');\n\t\t\twhite();\n\t\t}\n\t}\n\terror('Bad object');\n}\n\n// Parse a JSON value. It could be an object, an array, a string, a number, or a word.\nfunction value() {\n\twhite();\n\tswitch (ch) {\n\t\tcase '{':\n\t\t\treturn object();\n\t\tcase '[':\n\t\t\treturn array();\n\t\tcase '\"':\n\t\t\treturn string();\n\t\tcase '-':\n\t\t\treturn number();\n\t\tdefault:\n\t\t\treturn ch >= '0' && ch <= '9' ? number() : word();\n\t}\n}\n\n// Return the json_parse function. It will have access to all of the above functions and variables.\nmodule.exports = function (source, reviver) {\n\tvar result;\n\n\ttext = source;\n\tat = 0;\n\tch = ' ';\n\tresult = value();\n\twhite();\n\tif (ch) {\n\t\terror('Syntax error');\n\t}\n\n\t// If there is a reviver function, we recursively walk the new structure,\n\t// passing each name/value pair to the reviver function for possible\n\t// transformation, starting with a temporary root object that holds the result\n\t// in an empty key. If there is not a reviver function, we simply return the\n\t// result.\n\n\treturn typeof reviver === 'function' ? (function walk(holder, key) {\n\t\tvar k;\n\t\tvar v;\n\t\tvar val = holder[key];\n\t\tif (val && typeof val === 'object') {\n\t\t\tfor (k in value) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(val, k)) {\n\t\t\t\t\tv = walk(val, k);\n\t\t\t\t\tif (typeof v === 'undefined') {\n\t\t\t\t\t\tdelete val[k];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval[k] = v;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn reviver.call(holder, key, val);\n\t}({ '': result }, '')) : result;\n};\n","'use strict';\n\nvar escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\nvar gap;\nvar indent;\nvar meta = { // table of character substitutions\n\t'\\b': '\\\\b',\n\t'\\t': '\\\\t',\n\t'\\n': '\\\\n',\n\t'\\f': '\\\\f',\n\t'\\r': '\\\\r',\n\t'\"': '\\\\\"',\n\t'\\\\': '\\\\\\\\'\n};\nvar rep;\n\nfunction quote(string) {\n\t// If the string contains no control characters, no quote characters, and no\n\t// backslash characters, then we can safely slap some quotes around it.\n\t// Otherwise we must also replace the offending characters with safe escape sequences.\n\n\tescapable.lastIndex = 0;\n\treturn escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n\t\tvar c = meta[a];\n\t\treturn typeof c === 'string' ? c\n\t\t\t: '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n\t}) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n\t// Produce a string from holder[key].\n\tvar i; // The loop counter.\n\tvar k; // The member key.\n\tvar v; // The member value.\n\tvar length;\n\tvar mind = gap;\n\tvar partial;\n\tvar value = holder[key];\n\n\t// If the value has a toJSON method, call it to obtain a replacement value.\n\tif (value && typeof value === 'object' && typeof value.toJSON === 'function') {\n\t\tvalue = value.toJSON(key);\n\t}\n\n\t// If we were called with a replacer function, then call the replacer to obtain a replacement value.\n\tif (typeof rep === 'function') {\n\t\tvalue = rep.call(holder, key, value);\n\t}\n\n\t// What happens next depends on the value's type.\n\tswitch (typeof value) {\n\t\tcase 'string':\n\t\t\treturn quote(value);\n\n\t\tcase 'number':\n\t\t\t// JSON numbers must be finite. Encode non-finite numbers as null.\n\t\t\treturn isFinite(value) ? String(value) : 'null';\n\n\t\tcase 'boolean':\n\t\tcase 'null':\n\t\t\t// If the value is a boolean or null, convert it to a string. Note:\n\t\t\t// typeof null does not produce 'null'. The case is included here in\n\t\t\t// the remote chance that this gets fixed someday.\n\t\t\treturn String(value);\n\n\t\tcase 'object':\n\t\t\tif (!value) {\n\t\t\t\treturn 'null';\n\t\t\t}\n\t\t\tgap += indent;\n\t\t\tpartial = [];\n\n\t\t\t// Array.isArray\n\t\t\tif (Object.prototype.toString.apply(value) === '[object Array]') {\n\t\t\t\tlength = value.length;\n\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\tpartial[i] = str(i, value) || 'null';\n\t\t\t\t}\n\n\t\t\t\t// Join all of the elements together, separated with commas, and wrap them in brackets.\n\t\t\t\tv = partial.length === 0 ? '[]' : gap\n\t\t\t\t\t? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n\t\t\t\t\t: '[' + partial.join(',') + ']';\n\t\t\t\tgap = mind;\n\t\t\t\treturn v;\n\t\t\t}\n\n\t\t\t// If the replacer is an array, use it to select the members to be stringified.\n\t\t\tif (rep && typeof rep === 'object') {\n\t\t\t\tlength = rep.length;\n\t\t\t\tfor (i = 0; i < length; i += 1) {\n\t\t\t\t\tk = rep[i];\n\t\t\t\t\tif (typeof k === 'string') {\n\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, iterate through all of the keys in the object.\n\t\t\t\tfor (k in value) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, k)) {\n\t\t\t\t\t\tv = str(k, value);\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\tpartial.push(quote(k) + (gap ? ': ' : ':') + v);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Join all of the member texts together, separated with commas, and wrap them in braces.\n\n\t\t\tv = partial.length === 0 ? '{}' : gap\n\t\t\t\t? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n\t\t\t\t: '{' + partial.join(',') + '}';\n\t\t\tgap = mind;\n\t\t\treturn v;\n\t\tdefault:\n\t}\n}\n\nmodule.exports = function (value, replacer, space) {\n\tvar i;\n\tgap = '';\n\tindent = '';\n\n\t// If the space parameter is a number, make an indent string containing that many spaces.\n\tif (typeof space === 'number') {\n\t\tfor (i = 0; i < space; i += 1) {\n\t\t\tindent += ' ';\n\t\t}\n\t} else if (typeof space === 'string') {\n\t\t// If the space parameter is a string, it will be used as the indent string.\n\t\tindent = space;\n\t}\n\n\t// If there is a replacer, it must be a function or an array. Otherwise, throw an error.\n\trep = replacer;\n\tif (\n\t\treplacer\n\t\t&& typeof replacer !== 'function'\n\t\t&& (typeof replacer !== 'object' || typeof replacer.length !== 'number')\n\t) {\n\t\tthrow new Error('JSON.stringify');\n\t}\n\n\t// Make a fake root object containing our value under the key of ''.\n\t// Return the result of stringifying the value.\n\treturn str('', { '': value });\n};\n","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('readable-stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('readable-stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\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","/*!\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\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","'use strict'\n\nfunction decode (input, alphabet) {\n input = input.replace(new RegExp('=', 'g'), '')\n const length = input.length\n\n let bits = 0\n let value = 0\n\n let index = 0\n const output = new Uint8Array((length * 5 / 8) | 0)\n\n for (let i = 0; i < length; i++) {\n value = (value << 5) | alphabet.indexOf(input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n\nfunction encode (buffer, alphabet) {\n const length = buffer.byteLength\n const view = new Uint8Array(buffer)\n const padding = alphabet.indexOf('=') === alphabet.length - 1\n\n if (padding) {\n alphabet = alphabet.substring(0, alphabet.length - 1)\n }\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < length; i++) {\n value = (value << 8) | view[i]\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n\nmodule.exports = function base32 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return encode(Uint8Array.from(input), alphabet)\n }\n\n return encode(input, alphabet)\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base32 character')\n }\n }\n\n return decode(input, alphabet)\n }\n }\n}\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base64 (alphabet) {\n // The alphabet is only used to know:\n // 1. If padding is enabled (must contain '=')\n // 2. If the output must be url-safe (must contain '-' and '_')\n // 3. If the input of the output function is valid\n // The alphabets from RFC 4648 are always used.\n const padding = alphabet.indexOf('=') > -1\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\n\n return {\n encode (input) {\n let output = ''\n\n if (typeof input === 'string') {\n output = Buffer.from(input).toString('base64')\n } else {\n output = input.toString('base64')\n }\n\n if (url) {\n output = output.replace(/\\+/g, '-').replace(/\\//g, '_')\n }\n\n const pad = output.indexOf('=')\n if (pad > 0 && !padding) {\n output = output.substring(0, pad)\n }\n\n return output\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base64 character')\n }\n }\n\n return Buffer.from(input, 'base64')\n }\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n * @module Multibase\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst constants = require('./constants')\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.names = Object.freeze(Object.keys(constants.names))\nexports.codes = Object.freeze(Object.keys(constants.codes))\n\n/**\n * Create a new buffer with the multibase varint+code.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be prefixed with multibase.\n * @memberof Multibase\n * @returns {Buffer}\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded buffer')\n }\n const base = getBase(nameOrCode)\n const codeBuf = Buffer.from(base.code)\n\n const name = base.name\n validEncode(name, buf)\n return Buffer.concat([codeBuf, buf])\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be encoded.\n * @returns {Buffer}\n * @memberof Multibase\n */\nfunction encode (nameOrCode, buf) {\n const base = getBase(nameOrCode)\n const name = base.name\n\n return multibase(name, Buffer.from(base.encode(buf)))\n}\n\n/**\n * Takes a buffer or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Buffer|string} bufOrString\n * @returns {Buffer}\n * @memberof Multibase\n *\n */\nfunction decode (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n const code = bufOrString.substring(0, 1)\n bufOrString = bufOrString.substring(1, bufOrString.length)\n\n if (typeof bufOrString === 'string') {\n bufOrString = Buffer.from(bufOrString)\n }\n\n const base = getBase(code)\n return Buffer.from(base.decode(bufOrString.toString()))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Buffer|string} bufOrString\n * @returns {boolean}\n * @memberof Multibase\n */\nfunction isEncoded (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\n return false\n }\n\n const code = bufOrString.substring(0, 1)\n try {\n const base = getBase(code)\n return base.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * @param {string} name\n * @param {Buffer} buf\n * @private\n * @returns {undefined}\n */\nfunction validEncode (name, buf) {\n const base = getBase(name)\n base.decode(buf.toString())\n}\n\nfunction getBase (nameOrCode) {\n let base\n\n if (constants.names[nameOrCode]) {\n base = constants.names[nameOrCode]\n } else if (constants.codes[nameOrCode]) {\n base = constants.codes[nameOrCode]\n } else {\n throw new Error('Unsupported encoding')\n }\n\n if (!base.isImplemented()) {\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\n }\n\n return base\n}\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","'use strict'\nconst varint = require('varint')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","'use strict'\n\nconst baseTable = require('./base-table.json')\nconst varintEncode = require('./util').varintEncode\n\n// map for codecName -> codeVarintBuffer\nconst varintTable = {}\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n varintTable[encodingName] = varintEncode(code)\n}\n\nmodule.exports = Object.freeze(varintTable)\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","/* eslint quote-props: off */\n/* eslint key-spacing: off */\n'use strict'\n\nexports.names = Object.freeze({\n 'identity': 0x0,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'dbl-sha2-256': 0x56,\n 'sha3-224': 0x17,\n 'sha3-256': 0x16,\n 'sha3-384': 0x15,\n 'sha3-512': 0x14,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1A,\n 'keccak-256': 0x1B,\n 'keccak-384': 0x1C,\n 'keccak-512': 0x1D,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'Skein256-8': 0xb301,\n 'Skein256-16': 0xb302,\n 'Skein256-24': 0xb303,\n 'Skein256-32': 0xb304,\n 'Skein256-40': 0xb305,\n 'Skein256-48': 0xb306,\n 'Skein256-56': 0xb307,\n 'Skein256-64': 0xb308,\n 'Skein256-72': 0xb309,\n 'Skein256-80': 0xb30a,\n 'Skein256-88': 0xb30b,\n 'Skein256-96': 0xb30c,\n 'Skein256-104': 0xb30d,\n 'Skein256-112': 0xb30e,\n 'Skein256-120': 0xb30f,\n 'Skein256-128': 0xb310,\n 'Skein256-136': 0xb311,\n 'Skein256-144': 0xb312,\n 'Skein256-152': 0xb313,\n 'Skein256-160': 0xb314,\n 'Skein256-168': 0xb315,\n 'Skein256-176': 0xb316,\n 'Skein256-184': 0xb317,\n 'Skein256-192': 0xb318,\n 'Skein256-200': 0xb319,\n 'Skein256-208': 0xb31a,\n 'Skein256-216': 0xb31b,\n 'Skein256-224': 0xb31c,\n 'Skein256-232': 0xb31d,\n 'Skein256-240': 0xb31e,\n 'Skein256-248': 0xb31f,\n 'Skein256-256': 0xb320,\n 'Skein512-8': 0xb321,\n 'Skein512-16': 0xb322,\n 'Skein512-24': 0xb323,\n 'Skein512-32': 0xb324,\n 'Skein512-40': 0xb325,\n 'Skein512-48': 0xb326,\n 'Skein512-56': 0xb327,\n 'Skein512-64': 0xb328,\n 'Skein512-72': 0xb329,\n 'Skein512-80': 0xb32a,\n 'Skein512-88': 0xb32b,\n 'Skein512-96': 0xb32c,\n 'Skein512-104': 0xb32d,\n 'Skein512-112': 0xb32e,\n 'Skein512-120': 0xb32f,\n 'Skein512-128': 0xb330,\n 'Skein512-136': 0xb331,\n 'Skein512-144': 0xb332,\n 'Skein512-152': 0xb333,\n 'Skein512-160': 0xb334,\n 'Skein512-168': 0xb335,\n 'Skein512-176': 0xb336,\n 'Skein512-184': 0xb337,\n 'Skein512-192': 0xb338,\n 'Skein512-200': 0xb339,\n 'Skein512-208': 0xb33a,\n 'Skein512-216': 0xb33b,\n 'Skein512-224': 0xb33c,\n 'Skein512-232': 0xb33d,\n 'Skein512-240': 0xb33e,\n 'Skein512-248': 0xb33f,\n 'Skein512-256': 0xb340,\n 'Skein512-264': 0xb341,\n 'Skein512-272': 0xb342,\n 'Skein512-280': 0xb343,\n 'Skein512-288': 0xb344,\n 'Skein512-296': 0xb345,\n 'Skein512-304': 0xb346,\n 'Skein512-312': 0xb347,\n 'Skein512-320': 0xb348,\n 'Skein512-328': 0xb349,\n 'Skein512-336': 0xb34a,\n 'Skein512-344': 0xb34b,\n 'Skein512-352': 0xb34c,\n 'Skein512-360': 0xb34d,\n 'Skein512-368': 0xb34e,\n 'Skein512-376': 0xb34f,\n 'Skein512-384': 0xb350,\n 'Skein512-392': 0xb351,\n 'Skein512-400': 0xb352,\n 'Skein512-408': 0xb353,\n 'Skein512-416': 0xb354,\n 'Skein512-424': 0xb355,\n 'Skein512-432': 0xb356,\n 'Skein512-440': 0xb357,\n 'Skein512-448': 0xb358,\n 'Skein512-456': 0xb359,\n 'Skein512-464': 0xb35a,\n 'Skein512-472': 0xb35b,\n 'Skein512-480': 0xb35c,\n 'Skein512-488': 0xb35d,\n 'Skein512-496': 0xb35e,\n 'Skein512-504': 0xb35f,\n 'Skein512-512': 0xb360,\n 'Skein1024-8': 0xb361,\n 'Skein1024-16': 0xb362,\n 'Skein1024-24': 0xb363,\n 'Skein1024-32': 0xb364,\n 'Skein1024-40': 0xb365,\n 'Skein1024-48': 0xb366,\n 'Skein1024-56': 0xb367,\n 'Skein1024-64': 0xb368,\n 'Skein1024-72': 0xb369,\n 'Skein1024-80': 0xb36a,\n 'Skein1024-88': 0xb36b,\n 'Skein1024-96': 0xb36c,\n 'Skein1024-104': 0xb36d,\n 'Skein1024-112': 0xb36e,\n 'Skein1024-120': 0xb36f,\n 'Skein1024-128': 0xb370,\n 'Skein1024-136': 0xb371,\n 'Skein1024-144': 0xb372,\n 'Skein1024-152': 0xb373,\n 'Skein1024-160': 0xb374,\n 'Skein1024-168': 0xb375,\n 'Skein1024-176': 0xb376,\n 'Skein1024-184': 0xb377,\n 'Skein1024-192': 0xb378,\n 'Skein1024-200': 0xb379,\n 'Skein1024-208': 0xb37a,\n 'Skein1024-216': 0xb37b,\n 'Skein1024-224': 0xb37c,\n 'Skein1024-232': 0xb37d,\n 'Skein1024-240': 0xb37e,\n 'Skein1024-248': 0xb37f,\n 'Skein1024-256': 0xb380,\n 'Skein1024-264': 0xb381,\n 'Skein1024-272': 0xb382,\n 'Skein1024-280': 0xb383,\n 'Skein1024-288': 0xb384,\n 'Skein1024-296': 0xb385,\n 'Skein1024-304': 0xb386,\n 'Skein1024-312': 0xb387,\n 'Skein1024-320': 0xb388,\n 'Skein1024-328': 0xb389,\n 'Skein1024-336': 0xb38a,\n 'Skein1024-344': 0xb38b,\n 'Skein1024-352': 0xb38c,\n 'Skein1024-360': 0xb38d,\n 'Skein1024-368': 0xb38e,\n 'Skein1024-376': 0xb38f,\n 'Skein1024-384': 0xb390,\n 'Skein1024-392': 0xb391,\n 'Skein1024-400': 0xb392,\n 'Skein1024-408': 0xb393,\n 'Skein1024-416': 0xb394,\n 'Skein1024-424': 0xb395,\n 'Skein1024-432': 0xb396,\n 'Skein1024-440': 0xb397,\n 'Skein1024-448': 0xb398,\n 'Skein1024-456': 0xb399,\n 'Skein1024-464': 0xb39a,\n 'Skein1024-472': 0xb39b,\n 'Skein1024-480': 0xb39c,\n 'Skein1024-488': 0xb39d,\n 'Skein1024-496': 0xb39e,\n 'Skein1024-504': 0xb39f,\n 'Skein1024-512': 0xb3a0,\n 'Skein1024-520': 0xb3a1,\n 'Skein1024-528': 0xb3a2,\n 'Skein1024-536': 0xb3a3,\n 'Skein1024-544': 0xb3a4,\n 'Skein1024-552': 0xb3a5,\n 'Skein1024-560': 0xb3a6,\n 'Skein1024-568': 0xb3a7,\n 'Skein1024-576': 0xb3a8,\n 'Skein1024-584': 0xb3a9,\n 'Skein1024-592': 0xb3aa,\n 'Skein1024-600': 0xb3ab,\n 'Skein1024-608': 0xb3ac,\n 'Skein1024-616': 0xb3ad,\n 'Skein1024-624': 0xb3ae,\n 'Skein1024-632': 0xb3af,\n 'Skein1024-640': 0xb3b0,\n 'Skein1024-648': 0xb3b1,\n 'Skein1024-656': 0xb3b2,\n 'Skein1024-664': 0xb3b3,\n 'Skein1024-672': 0xb3b4,\n 'Skein1024-680': 0xb3b5,\n 'Skein1024-688': 0xb3b6,\n 'Skein1024-696': 0xb3b7,\n 'Skein1024-704': 0xb3b8,\n 'Skein1024-712': 0xb3b9,\n 'Skein1024-720': 0xb3ba,\n 'Skein1024-728': 0xb3bb,\n 'Skein1024-736': 0xb3bc,\n 'Skein1024-744': 0xb3bd,\n 'Skein1024-752': 0xb3be,\n 'Skein1024-760': 0xb3bf,\n 'Skein1024-768': 0xb3c0,\n 'Skein1024-776': 0xb3c1,\n 'Skein1024-784': 0xb3c2,\n 'Skein1024-792': 0xb3c3,\n 'Skein1024-800': 0xb3c4,\n 'Skein1024-808': 0xb3c5,\n 'Skein1024-816': 0xb3c6,\n 'Skein1024-824': 0xb3c7,\n 'Skein1024-832': 0xb3c8,\n 'Skein1024-840': 0xb3c9,\n 'Skein1024-848': 0xb3ca,\n 'Skein1024-856': 0xb3cb,\n 'Skein1024-864': 0xb3cc,\n 'Skein1024-872': 0xb3cd,\n 'Skein1024-880': 0xb3ce,\n 'Skein1024-888': 0xb3cf,\n 'Skein1024-896': 0xb3d0,\n 'Skein1024-904': 0xb3d1,\n 'Skein1024-912': 0xb3d2,\n 'Skein1024-920': 0xb3d3,\n 'Skein1024-928': 0xb3d4,\n 'Skein1024-936': 0xb3d5,\n 'Skein1024-944': 0xb3d6,\n 'Skein1024-952': 0xb3d7,\n 'Skein1024-960': 0xb3d8,\n 'Skein1024-968': 0xb3d9,\n 'Skein1024-976': 0xb3da,\n 'Skein1024-984': 0xb3db,\n 'Skein1024-992': 0xb3dc,\n 'Skein1024-1000': 0xb3dd,\n 'Skein1024-1008': 0xb3de,\n 'Skein1024-1016': 0xb3df,\n 'Skein1024-1024': 0xb3e0\n})\n\nexports.codes = Object.freeze({\n 0x0: 'identity',\n\n // sha family\n 0x11: 'sha1',\n 0x12: 'sha2-256',\n 0x13: 'sha2-512',\n 0x56: 'dbl-sha2-256',\n 0x17: 'sha3-224',\n 0x16: 'sha3-256',\n 0x15: 'sha3-384',\n 0x14: 'sha3-512',\n 0x18: 'shake-128',\n 0x19: 'shake-256',\n 0x1A: 'keccak-224',\n 0x1B: 'keccak-256',\n 0x1C: 'keccak-384',\n 0x1D: 'keccak-512',\n\n 0x22: 'murmur3-128',\n 0x23: 'murmur3-32',\n\n 0xd4: 'md4',\n 0xd5: 'md5',\n\n // blake2\n 0xb201: 'blake2b-8',\n 0xb202: 'blake2b-16',\n 0xb203: 'blake2b-24',\n 0xb204: 'blake2b-32',\n 0xb205: 'blake2b-40',\n 0xb206: 'blake2b-48',\n 0xb207: 'blake2b-56',\n 0xb208: 'blake2b-64',\n 0xb209: 'blake2b-72',\n 0xb20a: 'blake2b-80',\n 0xb20b: 'blake2b-88',\n 0xb20c: 'blake2b-96',\n 0xb20d: 'blake2b-104',\n 0xb20e: 'blake2b-112',\n 0xb20f: 'blake2b-120',\n 0xb210: 'blake2b-128',\n 0xb211: 'blake2b-136',\n 0xb212: 'blake2b-144',\n 0xb213: 'blake2b-152',\n 0xb214: 'blake2b-160',\n 0xb215: 'blake2b-168',\n 0xb216: 'blake2b-176',\n 0xb217: 'blake2b-184',\n 0xb218: 'blake2b-192',\n 0xb219: 'blake2b-200',\n 0xb21a: 'blake2b-208',\n 0xb21b: 'blake2b-216',\n 0xb21c: 'blake2b-224',\n 0xb21d: 'blake2b-232',\n 0xb21e: 'blake2b-240',\n 0xb21f: 'blake2b-248',\n 0xb220: 'blake2b-256',\n 0xb221: 'blake2b-264',\n 0xb222: 'blake2b-272',\n 0xb223: 'blake2b-280',\n 0xb224: 'blake2b-288',\n 0xb225: 'blake2b-296',\n 0xb226: 'blake2b-304',\n 0xb227: 'blake2b-312',\n 0xb228: 'blake2b-320',\n 0xb229: 'blake2b-328',\n 0xb22a: 'blake2b-336',\n 0xb22b: 'blake2b-344',\n 0xb22c: 'blake2b-352',\n 0xb22d: 'blake2b-360',\n 0xb22e: 'blake2b-368',\n 0xb22f: 'blake2b-376',\n 0xb230: 'blake2b-384',\n 0xb231: 'blake2b-392',\n 0xb232: 'blake2b-400',\n 0xb233: 'blake2b-408',\n 0xb234: 'blake2b-416',\n 0xb235: 'blake2b-424',\n 0xb236: 'blake2b-432',\n 0xb237: 'blake2b-440',\n 0xb238: 'blake2b-448',\n 0xb239: 'blake2b-456',\n 0xb23a: 'blake2b-464',\n 0xb23b: 'blake2b-472',\n 0xb23c: 'blake2b-480',\n 0xb23d: 'blake2b-488',\n 0xb23e: 'blake2b-496',\n 0xb23f: 'blake2b-504',\n 0xb240: 'blake2b-512',\n 0xb241: 'blake2s-8',\n 0xb242: 'blake2s-16',\n 0xb243: 'blake2s-24',\n 0xb244: 'blake2s-32',\n 0xb245: 'blake2s-40',\n 0xb246: 'blake2s-48',\n 0xb247: 'blake2s-56',\n 0xb248: 'blake2s-64',\n 0xb249: 'blake2s-72',\n 0xb24a: 'blake2s-80',\n 0xb24b: 'blake2s-88',\n 0xb24c: 'blake2s-96',\n 0xb24d: 'blake2s-104',\n 0xb24e: 'blake2s-112',\n 0xb24f: 'blake2s-120',\n 0xb250: 'blake2s-128',\n 0xb251: 'blake2s-136',\n 0xb252: 'blake2s-144',\n 0xb253: 'blake2s-152',\n 0xb254: 'blake2s-160',\n 0xb255: 'blake2s-168',\n 0xb256: 'blake2s-176',\n 0xb257: 'blake2s-184',\n 0xb258: 'blake2s-192',\n 0xb259: 'blake2s-200',\n 0xb25a: 'blake2s-208',\n 0xb25b: 'blake2s-216',\n 0xb25c: 'blake2s-224',\n 0xb25d: 'blake2s-232',\n 0xb25e: 'blake2s-240',\n 0xb25f: 'blake2s-248',\n 0xb260: 'blake2s-256',\n\n // skein\n 0xb301: 'Skein256-8',\n 0xb302: 'Skein256-16',\n 0xb303: 'Skein256-24',\n 0xb304: 'Skein256-32',\n 0xb305: 'Skein256-40',\n 0xb306: 'Skein256-48',\n 0xb307: 'Skein256-56',\n 0xb308: 'Skein256-64',\n 0xb309: 'Skein256-72',\n 0xb30a: 'Skein256-80',\n 0xb30b: 'Skein256-88',\n 0xb30c: 'Skein256-96',\n 0xb30d: 'Skein256-104',\n 0xb30e: 'Skein256-112',\n 0xb30f: 'Skein256-120',\n 0xb310: 'Skein256-128',\n 0xb311: 'Skein256-136',\n 0xb312: 'Skein256-144',\n 0xb313: 'Skein256-152',\n 0xb314: 'Skein256-160',\n 0xb315: 'Skein256-168',\n 0xb316: 'Skein256-176',\n 0xb317: 'Skein256-184',\n 0xb318: 'Skein256-192',\n 0xb319: 'Skein256-200',\n 0xb31a: 'Skein256-208',\n 0xb31b: 'Skein256-216',\n 0xb31c: 'Skein256-224',\n 0xb31d: 'Skein256-232',\n 0xb31e: 'Skein256-240',\n 0xb31f: 'Skein256-248',\n 0xb320: 'Skein256-256',\n 0xb321: 'Skein512-8',\n 0xb322: 'Skein512-16',\n 0xb323: 'Skein512-24',\n 0xb324: 'Skein512-32',\n 0xb325: 'Skein512-40',\n 0xb326: 'Skein512-48',\n 0xb327: 'Skein512-56',\n 0xb328: 'Skein512-64',\n 0xb329: 'Skein512-72',\n 0xb32a: 'Skein512-80',\n 0xb32b: 'Skein512-88',\n 0xb32c: 'Skein512-96',\n 0xb32d: 'Skein512-104',\n 0xb32e: 'Skein512-112',\n 0xb32f: 'Skein512-120',\n 0xb330: 'Skein512-128',\n 0xb331: 'Skein512-136',\n 0xb332: 'Skein512-144',\n 0xb333: 'Skein512-152',\n 0xb334: 'Skein512-160',\n 0xb335: 'Skein512-168',\n 0xb336: 'Skein512-176',\n 0xb337: 'Skein512-184',\n 0xb338: 'Skein512-192',\n 0xb339: 'Skein512-200',\n 0xb33a: 'Skein512-208',\n 0xb33b: 'Skein512-216',\n 0xb33c: 'Skein512-224',\n 0xb33d: 'Skein512-232',\n 0xb33e: 'Skein512-240',\n 0xb33f: 'Skein512-248',\n 0xb340: 'Skein512-256',\n 0xb341: 'Skein512-264',\n 0xb342: 'Skein512-272',\n 0xb343: 'Skein512-280',\n 0xb344: 'Skein512-288',\n 0xb345: 'Skein512-296',\n 0xb346: 'Skein512-304',\n 0xb347: 'Skein512-312',\n 0xb348: 'Skein512-320',\n 0xb349: 'Skein512-328',\n 0xb34a: 'Skein512-336',\n 0xb34b: 'Skein512-344',\n 0xb34c: 'Skein512-352',\n 0xb34d: 'Skein512-360',\n 0xb34e: 'Skein512-368',\n 0xb34f: 'Skein512-376',\n 0xb350: 'Skein512-384',\n 0xb351: 'Skein512-392',\n 0xb352: 'Skein512-400',\n 0xb353: 'Skein512-408',\n 0xb354: 'Skein512-416',\n 0xb355: 'Skein512-424',\n 0xb356: 'Skein512-432',\n 0xb357: 'Skein512-440',\n 0xb358: 'Skein512-448',\n 0xb359: 'Skein512-456',\n 0xb35a: 'Skein512-464',\n 0xb35b: 'Skein512-472',\n 0xb35c: 'Skein512-480',\n 0xb35d: 'Skein512-488',\n 0xb35e: 'Skein512-496',\n 0xb35f: 'Skein512-504',\n 0xb360: 'Skein512-512',\n 0xb361: 'Skein1024-8',\n 0xb362: 'Skein1024-16',\n 0xb363: 'Skein1024-24',\n 0xb364: 'Skein1024-32',\n 0xb365: 'Skein1024-40',\n 0xb366: 'Skein1024-48',\n 0xb367: 'Skein1024-56',\n 0xb368: 'Skein1024-64',\n 0xb369: 'Skein1024-72',\n 0xb36a: 'Skein1024-80',\n 0xb36b: 'Skein1024-88',\n 0xb36c: 'Skein1024-96',\n 0xb36d: 'Skein1024-104',\n 0xb36e: 'Skein1024-112',\n 0xb36f: 'Skein1024-120',\n 0xb370: 'Skein1024-128',\n 0xb371: 'Skein1024-136',\n 0xb372: 'Skein1024-144',\n 0xb373: 'Skein1024-152',\n 0xb374: 'Skein1024-160',\n 0xb375: 'Skein1024-168',\n 0xb376: 'Skein1024-176',\n 0xb377: 'Skein1024-184',\n 0xb378: 'Skein1024-192',\n 0xb379: 'Skein1024-200',\n 0xb37a: 'Skein1024-208',\n 0xb37b: 'Skein1024-216',\n 0xb37c: 'Skein1024-224',\n 0xb37d: 'Skein1024-232',\n 0xb37e: 'Skein1024-240',\n 0xb37f: 'Skein1024-248',\n 0xb380: 'Skein1024-256',\n 0xb381: 'Skein1024-264',\n 0xb382: 'Skein1024-272',\n 0xb383: 'Skein1024-280',\n 0xb384: 'Skein1024-288',\n 0xb385: 'Skein1024-296',\n 0xb386: 'Skein1024-304',\n 0xb387: 'Skein1024-312',\n 0xb388: 'Skein1024-320',\n 0xb389: 'Skein1024-328',\n 0xb38a: 'Skein1024-336',\n 0xb38b: 'Skein1024-344',\n 0xb38c: 'Skein1024-352',\n 0xb38d: 'Skein1024-360',\n 0xb38e: 'Skein1024-368',\n 0xb38f: 'Skein1024-376',\n 0xb390: 'Skein1024-384',\n 0xb391: 'Skein1024-392',\n 0xb392: 'Skein1024-400',\n 0xb393: 'Skein1024-408',\n 0xb394: 'Skein1024-416',\n 0xb395: 'Skein1024-424',\n 0xb396: 'Skein1024-432',\n 0xb397: 'Skein1024-440',\n 0xb398: 'Skein1024-448',\n 0xb399: 'Skein1024-456',\n 0xb39a: 'Skein1024-464',\n 0xb39b: 'Skein1024-472',\n 0xb39c: 'Skein1024-480',\n 0xb39d: 'Skein1024-488',\n 0xb39e: 'Skein1024-496',\n 0xb39f: 'Skein1024-504',\n 0xb3a0: 'Skein1024-512',\n 0xb3a1: 'Skein1024-520',\n 0xb3a2: 'Skein1024-528',\n 0xb3a3: 'Skein1024-536',\n 0xb3a4: 'Skein1024-544',\n 0xb3a5: 'Skein1024-552',\n 0xb3a6: 'Skein1024-560',\n 0xb3a7: 'Skein1024-568',\n 0xb3a8: 'Skein1024-576',\n 0xb3a9: 'Skein1024-584',\n 0xb3aa: 'Skein1024-592',\n 0xb3ab: 'Skein1024-600',\n 0xb3ac: 'Skein1024-608',\n 0xb3ad: 'Skein1024-616',\n 0xb3ae: 'Skein1024-624',\n 0xb3af: 'Skein1024-632',\n 0xb3b0: 'Skein1024-640',\n 0xb3b1: 'Skein1024-648',\n 0xb3b2: 'Skein1024-656',\n 0xb3b3: 'Skein1024-664',\n 0xb3b4: 'Skein1024-672',\n 0xb3b5: 'Skein1024-680',\n 0xb3b6: 'Skein1024-688',\n 0xb3b7: 'Skein1024-696',\n 0xb3b8: 'Skein1024-704',\n 0xb3b9: 'Skein1024-712',\n 0xb3ba: 'Skein1024-720',\n 0xb3bb: 'Skein1024-728',\n 0xb3bc: 'Skein1024-736',\n 0xb3bd: 'Skein1024-744',\n 0xb3be: 'Skein1024-752',\n 0xb3bf: 'Skein1024-760',\n 0xb3c0: 'Skein1024-768',\n 0xb3c1: 'Skein1024-776',\n 0xb3c2: 'Skein1024-784',\n 0xb3c3: 'Skein1024-792',\n 0xb3c4: 'Skein1024-800',\n 0xb3c5: 'Skein1024-808',\n 0xb3c6: 'Skein1024-816',\n 0xb3c7: 'Skein1024-824',\n 0xb3c8: 'Skein1024-832',\n 0xb3c9: 'Skein1024-840',\n 0xb3ca: 'Skein1024-848',\n 0xb3cb: 'Skein1024-856',\n 0xb3cc: 'Skein1024-864',\n 0xb3cd: 'Skein1024-872',\n 0xb3ce: 'Skein1024-880',\n 0xb3cf: 'Skein1024-888',\n 0xb3d0: 'Skein1024-896',\n 0xb3d1: 'Skein1024-904',\n 0xb3d2: 'Skein1024-912',\n 0xb3d3: 'Skein1024-920',\n 0xb3d4: 'Skein1024-928',\n 0xb3d5: 'Skein1024-936',\n 0xb3d6: 'Skein1024-944',\n 0xb3d7: 'Skein1024-952',\n 0xb3d8: 'Skein1024-960',\n 0xb3d9: 'Skein1024-968',\n 0xb3da: 'Skein1024-976',\n 0xb3db: 'Skein1024-984',\n 0xb3dc: 'Skein1024-992',\n 0xb3dd: 'Skein1024-1000',\n 0xb3de: 'Skein1024-1008',\n 0xb3df: 'Skein1024-1016',\n 0xb3e0: 'Skein1024-1024'\n})\n\nexports.defaultLengths = Object.freeze({\n 0x11: 20,\n 0x12: 32,\n 0x13: 64,\n 0x56: 32,\n 0x17: 28,\n 0x16: 32,\n 0x15: 48,\n 0x14: 64,\n 0x18: 32,\n 0x19: 64,\n 0x1A: 28,\n 0x1B: 32,\n 0x1C: 48,\n 0x1D: 64,\n 0x22: 32,\n\n 0xb201: 0x01,\n 0xb202: 0x02,\n 0xb203: 0x03,\n 0xb204: 0x04,\n 0xb205: 0x05,\n 0xb206: 0x06,\n 0xb207: 0x07,\n 0xb208: 0x08,\n 0xb209: 0x09,\n 0xb20a: 0x0a,\n 0xb20b: 0x0b,\n 0xb20c: 0x0c,\n 0xb20d: 0x0d,\n 0xb20e: 0x0e,\n 0xb20f: 0x0f,\n 0xb210: 0x10,\n 0xb211: 0x11,\n 0xb212: 0x12,\n 0xb213: 0x13,\n 0xb214: 0x14,\n 0xb215: 0x15,\n 0xb216: 0x16,\n 0xb217: 0x17,\n 0xb218: 0x18,\n 0xb219: 0x19,\n 0xb21a: 0x1a,\n 0xb21b: 0x1b,\n 0xb21c: 0x1c,\n 0xb21d: 0x1d,\n 0xb21e: 0x1e,\n 0xb21f: 0x1f,\n 0xb220: 0x20,\n 0xb221: 0x21,\n 0xb222: 0x22,\n 0xb223: 0x23,\n 0xb224: 0x24,\n 0xb225: 0x25,\n 0xb226: 0x26,\n 0xb227: 0x27,\n 0xb228: 0x28,\n 0xb229: 0x29,\n 0xb22a: 0x2a,\n 0xb22b: 0x2b,\n 0xb22c: 0x2c,\n 0xb22d: 0x2d,\n 0xb22e: 0x2e,\n 0xb22f: 0x2f,\n 0xb230: 0x30,\n 0xb231: 0x31,\n 0xb232: 0x32,\n 0xb233: 0x33,\n 0xb234: 0x34,\n 0xb235: 0x35,\n 0xb236: 0x36,\n 0xb237: 0x37,\n 0xb238: 0x38,\n 0xb239: 0x39,\n 0xb23a: 0x3a,\n 0xb23b: 0x3b,\n 0xb23c: 0x3c,\n 0xb23d: 0x3d,\n 0xb23e: 0x3e,\n 0xb23f: 0x3f,\n 0xb240: 0x40,\n 0xb241: 0x01,\n 0xb242: 0x02,\n 0xb243: 0x03,\n 0xb244: 0x04,\n 0xb245: 0x05,\n 0xb246: 0x06,\n 0xb247: 0x07,\n 0xb248: 0x08,\n 0xb249: 0x09,\n 0xb24a: 0x0a,\n 0xb24b: 0x0b,\n 0xb24c: 0x0c,\n 0xb24d: 0x0d,\n 0xb24e: 0x0e,\n 0xb24f: 0x0f,\n 0xb250: 0x10,\n 0xb251: 0x11,\n 0xb252: 0x12,\n 0xb253: 0x13,\n 0xb254: 0x14,\n 0xb255: 0x15,\n 0xb256: 0x16,\n 0xb257: 0x17,\n 0xb258: 0x18,\n 0xb259: 0x19,\n 0xb25a: 0x1a,\n 0xb25b: 0x1b,\n 0xb25c: 0x1c,\n 0xb25d: 0x1d,\n 0xb25e: 0x1e,\n 0xb25f: 0x1f,\n 0xb260: 0x20,\n 0xb301: 0x01,\n 0xb302: 0x02,\n 0xb303: 0x03,\n 0xb304: 0x04,\n 0xb305: 0x05,\n 0xb306: 0x06,\n 0xb307: 0x07,\n 0xb308: 0x08,\n 0xb309: 0x09,\n 0xb30a: 0x0a,\n 0xb30b: 0x0b,\n 0xb30c: 0x0c,\n 0xb30d: 0x0d,\n 0xb30e: 0x0e,\n 0xb30f: 0x0f,\n 0xb310: 0x10,\n 0xb311: 0x11,\n 0xb312: 0x12,\n 0xb313: 0x13,\n 0xb314: 0x14,\n 0xb315: 0x15,\n 0xb316: 0x16,\n 0xb317: 0x17,\n 0xb318: 0x18,\n 0xb319: 0x19,\n 0xb31a: 0x1a,\n 0xb31b: 0x1b,\n 0xb31c: 0x1c,\n 0xb31d: 0x1d,\n 0xb31e: 0x1e,\n 0xb31f: 0x1f,\n 0xb320: 0x20,\n 0xb321: 0x01,\n 0xb322: 0x02,\n 0xb323: 0x03,\n 0xb324: 0x04,\n 0xb325: 0x05,\n 0xb326: 0x06,\n 0xb327: 0x07,\n 0xb328: 0x08,\n 0xb329: 0x09,\n 0xb32a: 0x0a,\n 0xb32b: 0x0b,\n 0xb32c: 0x0c,\n 0xb32d: 0x0d,\n 0xb32e: 0x0e,\n 0xb32f: 0x0f,\n 0xb330: 0x10,\n 0xb331: 0x11,\n 0xb332: 0x12,\n 0xb333: 0x13,\n 0xb334: 0x14,\n 0xb335: 0x15,\n 0xb336: 0x16,\n 0xb337: 0x17,\n 0xb338: 0x18,\n 0xb339: 0x19,\n 0xb33a: 0x1a,\n 0xb33b: 0x1b,\n 0xb33c: 0x1c,\n 0xb33d: 0x1d,\n 0xb33e: 0x1e,\n 0xb33f: 0x1f,\n 0xb340: 0x20,\n 0xb341: 0x21,\n 0xb342: 0x22,\n 0xb343: 0x23,\n 0xb344: 0x24,\n 0xb345: 0x25,\n 0xb346: 0x26,\n 0xb347: 0x27,\n 0xb348: 0x28,\n 0xb349: 0x29,\n 0xb34a: 0x2a,\n 0xb34b: 0x2b,\n 0xb34c: 0x2c,\n 0xb34d: 0x2d,\n 0xb34e: 0x2e,\n 0xb34f: 0x2f,\n 0xb350: 0x30,\n 0xb351: 0x31,\n 0xb352: 0x32,\n 0xb353: 0x33,\n 0xb354: 0x34,\n 0xb355: 0x35,\n 0xb356: 0x36,\n 0xb357: 0x37,\n 0xb358: 0x38,\n 0xb359: 0x39,\n 0xb35a: 0x3a,\n 0xb35b: 0x3b,\n 0xb35c: 0x3c,\n 0xb35d: 0x3d,\n 0xb35e: 0x3e,\n 0xb35f: 0x3f,\n 0xb360: 0x40,\n 0xb361: 0x01,\n 0xb362: 0x02,\n 0xb363: 0x03,\n 0xb364: 0x04,\n 0xb365: 0x05,\n 0xb366: 0x06,\n 0xb367: 0x07,\n 0xb368: 0x08,\n 0xb369: 0x09,\n 0xb36a: 0x0a,\n 0xb36b: 0x0b,\n 0xb36c: 0x0c,\n 0xb36d: 0x0d,\n 0xb36e: 0x0e,\n 0xb36f: 0x0f,\n 0xb370: 0x10,\n 0xb371: 0x11,\n 0xb372: 0x12,\n 0xb373: 0x13,\n 0xb374: 0x14,\n 0xb375: 0x15,\n 0xb376: 0x16,\n 0xb377: 0x17,\n 0xb378: 0x18,\n 0xb379: 0x19,\n 0xb37a: 0x1a,\n 0xb37b: 0x1b,\n 0xb37c: 0x1c,\n 0xb37d: 0x1d,\n 0xb37e: 0x1e,\n 0xb37f: 0x1f,\n 0xb380: 0x20,\n 0xb381: 0x21,\n 0xb382: 0x22,\n 0xb383: 0x23,\n 0xb384: 0x24,\n 0xb385: 0x25,\n 0xb386: 0x26,\n 0xb387: 0x27,\n 0xb388: 0x28,\n 0xb389: 0x29,\n 0xb38a: 0x2a,\n 0xb38b: 0x2b,\n 0xb38c: 0x2c,\n 0xb38d: 0x2d,\n 0xb38e: 0x2e,\n 0xb38f: 0x2f,\n 0xb390: 0x30,\n 0xb391: 0x31,\n 0xb392: 0x32,\n 0xb393: 0x33,\n 0xb394: 0x34,\n 0xb395: 0x35,\n 0xb396: 0x36,\n 0xb397: 0x37,\n 0xb398: 0x38,\n 0xb399: 0x39,\n 0xb39a: 0x3a,\n 0xb39b: 0x3b,\n 0xb39c: 0x3c,\n 0xb39d: 0x3d,\n 0xb39e: 0x3e,\n 0xb39f: 0x3f,\n 0xb3a0: 0x40,\n 0xb3a1: 0x41,\n 0xb3a2: 0x42,\n 0xb3a3: 0x43,\n 0xb3a4: 0x44,\n 0xb3a5: 0x45,\n 0xb3a6: 0x46,\n 0xb3a7: 0x47,\n 0xb3a8: 0x48,\n 0xb3a9: 0x49,\n 0xb3aa: 0x4a,\n 0xb3ab: 0x4b,\n 0xb3ac: 0x4c,\n 0xb3ad: 0x4d,\n 0xb3ae: 0x4e,\n 0xb3af: 0x4f,\n 0xb3b0: 0x50,\n 0xb3b1: 0x51,\n 0xb3b2: 0x52,\n 0xb3b3: 0x53,\n 0xb3b4: 0x54,\n 0xb3b5: 0x55,\n 0xb3b6: 0x56,\n 0xb3b7: 0x57,\n 0xb3b8: 0x58,\n 0xb3b9: 0x59,\n 0xb3ba: 0x5a,\n 0xb3bb: 0x5b,\n 0xb3bc: 0x5c,\n 0xb3bd: 0x5d,\n 0xb3be: 0x5e,\n 0xb3bf: 0x5f,\n 0xb3c0: 0x60,\n 0xb3c1: 0x61,\n 0xb3c2: 0x62,\n 0xb3c3: 0x63,\n 0xb3c4: 0x64,\n 0xb3c5: 0x65,\n 0xb3c6: 0x66,\n 0xb3c7: 0x67,\n 0xb3c8: 0x68,\n 0xb3c9: 0x69,\n 0xb3ca: 0x6a,\n 0xb3cb: 0x6b,\n 0xb3cc: 0x6c,\n 0xb3cd: 0x6d,\n 0xb3ce: 0x6e,\n 0xb3cf: 0x6f,\n 0xb3d0: 0x70,\n 0xb3d1: 0x71,\n 0xb3d2: 0x72,\n 0xb3d3: 0x73,\n 0xb3d4: 0x74,\n 0xb3d5: 0x75,\n 0xb3d6: 0x76,\n 0xb3d7: 0x77,\n 0xb3d8: 0x78,\n 0xb3d9: 0x79,\n 0xb3da: 0x7a,\n 0xb3db: 0x7b,\n 0xb3dc: 0x7c,\n 0xb3dd: 0x7d,\n 0xb3de: 0x7e,\n 0xb3df: 0x7f,\n 0xb3e0: 0x80\n})\n","/**\n * Multihash implementation in JavaScript.\n *\n * @module multihash\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst multibase = require('multibase')\nconst varint = require('varint')\nconst cs = require('./constants')\n\nexports.names = cs.names\nexports.codes = cs.codes\nexports.defaultLengths = cs.defaultLengths\n\n/**\n * Convert the given multihash to a hex encoded string.\n *\n * @param {Buffer} hash\n * @returns {string}\n */\nexports.toHexString = function toHexString (hash) {\n if (!Buffer.isBuffer(hash)) {\n throw new Error('must be passed a buffer')\n }\n\n return hash.toString('hex')\n}\n\n/**\n * Convert the given hex encoded string to a multihash.\n *\n * @param {string} hash\n * @returns {Buffer}\n */\nexports.fromHexString = function fromHexString (hash) {\n return Buffer.from(hash, 'hex')\n}\n\n/**\n * Convert the given multihash to a base58 encoded string.\n *\n * @param {Buffer} hash\n * @returns {string}\n */\nexports.toB58String = function toB58String (hash) {\n if (!Buffer.isBuffer(hash)) {\n throw new Error('must be passed a buffer')\n }\n\n return multibase.encode('base58btc', hash).toString().slice(1)\n}\n\n/**\n * Convert the given base58 encoded string to a multihash.\n *\n * @param {string|Buffer} hash\n * @returns {Buffer}\n */\nexports.fromB58String = function fromB58String (hash) {\n let encoded = hash\n if (Buffer.isBuffer(hash)) {\n encoded = hash.toString()\n }\n\n return multibase.decode('z' + encoded)\n}\n\n/**\n * Decode a hash from the given multihash.\n *\n * @param {Buffer} buf\n * @returns {{code: number, name: string, length: number, digest: Buffer}} result\n */\nexports.decode = function decode (buf) {\n if (!(Buffer.isBuffer(buf))) {\n throw new Error('multihash must be a Buffer')\n }\n\n if (buf.length < 2) {\n throw new Error('multihash too short. must be > 2 bytes.')\n }\n\n const code = varint.decode(buf)\n if (!exports.isValidCode(code)) {\n throw new Error(`multihash unknown function code: 0x${code.toString(16)}`)\n }\n buf = buf.slice(varint.decode.bytes)\n\n const len = varint.decode(buf)\n if (len < 0) {\n throw new Error(`multihash invalid length: ${len}`)\n }\n buf = buf.slice(varint.decode.bytes)\n\n if (buf.length !== len) {\n throw new Error(`multihash length inconsistent: 0x${buf.toString('hex')}`)\n }\n\n return {\n code: code,\n name: cs.codes[code],\n length: len,\n digest: buf\n }\n}\n\n/**\n * Encode a hash digest along with the specified function code.\n *\n * > **Note:** the length is derived from the length of the digest itself.\n *\n * @param {Buffer} digest\n * @param {string|number} code\n * @param {number} [length]\n * @returns {Buffer}\n */\nexports.encode = function encode (digest, code, length) {\n if (!digest || code === undefined) {\n throw new Error('multihash encode requires at least two args: digest, code')\n }\n\n // ensure it's a hashfunction code.\n const hashfn = exports.coerceCode(code)\n\n if (!(Buffer.isBuffer(digest))) {\n throw new Error('digest should be a Buffer')\n }\n\n if (length == null) {\n length = digest.length\n }\n\n if (length && digest.length !== length) {\n throw new Error('digest length should be equal to specified length.')\n }\n\n return Buffer.concat([\n Buffer.from(varint.encode(hashfn)),\n Buffer.from(varint.encode(length)),\n digest\n ])\n}\n\n/**\n * Converts a hash function name into the matching code.\n * If passed a number it will return the number if it's a valid code.\n * @param {string|number} name\n * @returns {number}\n */\nexports.coerceCode = function coerceCode (name) {\n let code = name\n\n if (typeof name === 'string') {\n if (cs.names[name] === undefined) {\n throw new Error(`Unrecognized hash function named: ${name}`)\n }\n code = cs.names[name]\n }\n\n if (typeof code !== 'number') {\n throw new Error(`Hash function code should be a number. Got: ${code}`)\n }\n\n if (cs.codes[code] === undefined && !exports.isAppCode(code)) {\n throw new Error(`Unrecognized function code: ${code}`)\n }\n\n return code\n}\n\n/**\n * Checks wether a code is part of the app range\n *\n * @param {number} code\n * @returns {boolean}\n */\nexports.isAppCode = function appCode (code) {\n return code > 0 && code < 0x10\n}\n\n/**\n * Checks whether a multihash code is valid.\n *\n * @param {number} code\n * @returns {boolean}\n */\nexports.isValidCode = function validCode (code) {\n if (exports.isAppCode(code)) {\n return true\n }\n\n if (cs.codes[code]) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if the given buffer is a valid multihash. Throws an error if it is not valid.\n *\n * @param {Buffer} multihash\n * @returns {undefined}\n * @throws {Error}\n */\nfunction validate (multihash) {\n exports.decode(multihash) // throws if bad.\n}\nexports.validate = validate\n\n/**\n * Returns a prefix from a valid multihash. Throws an error if it is not valid.\n *\n * @param {Buffer} multihash\n * @returns {undefined}\n * @throws {Error}\n */\nexports.prefix = function prefix (multihash) {\n validate(multihash)\n\n return multihash.slice(0, 2)\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var BN = require('bn.js');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Returns a BN object, converts a number value to a BN\n * @param {String|Number|Object} `arg` input a string number, hex string number, number, BigNumber or BN object\n * @return {Object} `output` BN object of the number\n * @throws if the argument is not an array, object that isn't a bignumber, not a string number or number\n */\nmodule.exports = function numberToBN(arg) {\n if (typeof arg === 'string' || typeof arg === 'number') {\n var multiplier = new BN(1); // eslint-disable-line\n var formattedString = String(arg).toLowerCase().trim();\n var isHexPrefixed = formattedString.substr(0, 2) === '0x' || formattedString.substr(0, 3) === '-0x';\n var stringArg = stripHexPrefix(formattedString); // eslint-disable-line\n if (stringArg.substr(0, 1) === '-') {\n stringArg = stripHexPrefix(stringArg.slice(1));\n multiplier = new BN(-1, 10);\n }\n stringArg = stringArg === '' ? '0' : stringArg;\n\n if ((!stringArg.match(/^-?[0-9]+$/) && stringArg.match(/^[0-9A-Fa-f]+$/))\n || stringArg.match(/^[a-fA-F]+$/)\n || (isHexPrefixed === true && stringArg.match(/^[0-9A-Fa-f]+$/))) {\n return new BN(stringArg, 16).mul(multiplier);\n }\n\n if ((stringArg.match(/^-?[0-9]+$/) || stringArg === '') && isHexPrefixed === false) {\n return new BN(stringArg, 10).mul(multiplier);\n }\n } else if (typeof arg === 'object' && arg.toString && (!arg.pop && !arg.push)) {\n if (arg.toString(10).match(/^-?[0-9]+$/) && (arg.mul || arg.dividedToIntegerBy)) {\n return new BN(arg.toString(10), 10);\n }\n }\n\n throw new Error('[number-to-bn] while converting number ' + JSON.stringify(arg) + ' to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","/*!\n * v2.1.4-104-gc868b3a\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"oboe\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"oboe\"] = factory();\n\telse\n\t\troot[\"oboe\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return partialComplete; });\n/* unused harmony export compose */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return compose2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return attr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return lazyUnion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return apply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return varArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return flip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return lazyIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return noop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return always; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return functor; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n\n\n/**\n * Partially complete a function.\n *\n * var add3 = partialComplete( function add(a,b){return a+b}, 3 );\n *\n * add3(4) // gives 7\n *\n * function wrap(left, right, cen){return left + \" \" + cen + \" \" + right;}\n *\n * var pirateGreeting = partialComplete( wrap , \"I'm\", \", a mighty pirate!\" );\n *\n * pirateGreeting(\"Guybrush Threepwood\");\n * // gives \"I'm Guybrush Threepwood, a mighty pirate!\"\n */\nvar partialComplete = varArgs(function (fn, args) {\n // this isn't the shortest way to write this but it does\n // avoid creating a new array each time to pass to fn.apply,\n // otherwise could just call boundArgs.concat(callArgs)\n\n var numBoundArgs = args.length\n\n return varArgs(function (callArgs) {\n for (var i = 0; i < callArgs.length; i++) {\n args[numBoundArgs + i] = callArgs[i]\n }\n\n args.length = numBoundArgs + callArgs.length\n\n return fn.apply(this, args)\n })\n})\n\n/**\n* Compose zero or more functions:\n*\n* compose(f1, f2, f3)(x) = f1(f2(f3(x))))\n*\n* The last (inner-most) function may take more than one parameter:\n*\n* compose(f1, f2, f3)(x,y) = f1(f2(f3(x,y))))\n*/\nvar compose = varArgs(function (fns) {\n var fnsList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"c\" /* arrayAsList */])(fns)\n\n function next (params, curFn) {\n return [apply(params, curFn)]\n }\n\n return varArgs(function (startParams) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"f\" /* foldR */])(next, startParams, fnsList)[0]\n })\n})\n\n/**\n* A more optimised version of compose that takes exactly two functions\n* @param f1\n* @param f2\n*/\nfunction compose2 (f1, f2) {\n return function () {\n return f1.call(this, f2.apply(this, arguments))\n }\n}\n\n/**\n* Generic form for a function to get a property from an object\n*\n* var o = {\n* foo:'bar'\n* }\n*\n* var getFoo = attr('foo')\n*\n* fetFoo(o) // returns 'bar'\n*\n* @param {String} key the property name\n*/\nfunction attr (key) {\n return function (o) { return o[key] }\n}\n\n/**\n* Call a list of functions with the same args until one returns a\n* truthy result. Similar to the || operator.\n*\n* So:\n* lazyUnion([f1,f2,f3 ... fn])( p1, p2 ... pn )\n*\n* Is equivalent to:\n* apply([p1, p2 ... pn], f1) ||\n* apply([p1, p2 ... pn], f2) ||\n* apply([p1, p2 ... pn], f3) ... apply(fn, [p1, p2 ... pn])\n*\n* @returns the first return value that is given that is truthy.\n*/\nvar lazyUnion = varArgs(function (fns) {\n return varArgs(function (params) {\n var maybeValue\n\n for (var i = 0; i < attr('length')(fns); i++) {\n maybeValue = apply(params, fns[i])\n\n if (maybeValue) {\n return maybeValue\n }\n }\n })\n})\n\n/**\n* This file declares various pieces of functional programming.\n*\n* This isn't a general purpose functional library, to keep things small it\n* has just the parts useful for Oboe.js.\n*/\n\n/**\n* Call a single function with the given arguments array.\n* Basically, a functional-style version of the OO-style Function#apply for\n* when we don't care about the context ('this') of the call.\n*\n* The order of arguments allows partial completion of the arguments array\n*/\nfunction apply (args, fn) {\n return fn.apply(undefined, args)\n}\n\n/**\n* Define variable argument functions but cut out all that tedious messing about\n* with the arguments object. Delivers the variable-length part of the arguments\n* list as an array.\n*\n* Eg:\n*\n* var myFunction = varArgs(\n* function( fixedArgument, otherFixedArgument, variableNumberOfArguments ){\n* console.log( variableNumberOfArguments );\n* }\n* )\n*\n* myFunction('a', 'b', 1, 2, 3); // logs [1,2,3]\n*\n* var myOtherFunction = varArgs(function( variableNumberOfArguments ){\n* console.log( variableNumberOfArguments );\n* })\n*\n* myFunction(1, 2, 3); // logs [1,2,3]\n*\n*/\nfunction varArgs (fn) {\n var numberOfFixedArguments = fn.length - 1\n var slice = Array.prototype.slice\n\n if (numberOfFixedArguments === 0) {\n // an optimised case for when there are no fixed args:\n\n return function () {\n return fn.call(this, slice.call(arguments))\n }\n } else if (numberOfFixedArguments === 1) {\n // an optimised case for when there are is one fixed args:\n\n return function () {\n return fn.call(this, arguments[0], slice.call(arguments, 1))\n }\n }\n\n // general case\n\n // we know how many arguments fn will always take. Create a\n // fixed-size array to hold that many, to be re-used on\n // every call to the returned function\n var argsHolder = Array(fn.length)\n\n return function () {\n for (var i = 0; i < numberOfFixedArguments; i++) {\n argsHolder[i] = arguments[i]\n }\n\n argsHolder[numberOfFixedArguments] =\n slice.call(arguments, numberOfFixedArguments)\n\n return fn.apply(this, argsHolder)\n }\n}\n\n/**\n* Swap the order of parameters to a binary function\n*\n* A bit like this flip: http://zvon.org/other/haskell/Outputprelude/flip_f.html\n*/\nfunction flip (fn) {\n return function (a, b) {\n return fn(b, a)\n }\n}\n\n/**\n* Create a function which is the intersection of two other functions.\n*\n* Like the && operator, if the first is truthy, the second is never called,\n* otherwise the return value from the second is returned.\n*/\nfunction lazyIntersection (fn1, fn2) {\n return function (param) {\n return fn1(param) && fn2(param)\n }\n}\n\n/**\n* A function which does nothing\n*/\nfunction noop () { }\n\n/**\n* A function which is always happy\n*/\nfunction always () { return true }\n\n/**\n* Create a function which always returns the same\n* value\n*\n* var return3 = functor(3);\n*\n* return3() // gives 3\n* return3() // still gives 3\n* return3() // will always give 3\n*/\nfunction functor (val) {\n return function () {\n return val\n }\n}\n\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return cons; });\n/* unused harmony export emptyList */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return head; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return tail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return arrayAsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return list; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return listAsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return foldR; });\n/* unused harmony export foldR1 */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return without; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return all; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return applyEach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return reverseList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return first; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\n/**\n * Like cons in Lisp\n */\nfunction cons (x, xs) {\n /* Internally lists are linked 2-element Javascript arrays.\n\n Ideally the return here would be Object.freeze([x,xs])\n so that bugs related to mutation are found fast.\n However, cons is right on the critical path for\n performance and this slows oboe-mark down by\n ~25%. Under theoretical future JS engines that freeze more\n efficiently (possibly even use immutability to\n run faster) this should be considered for\n restoration.\n */\n\n return [x, xs]\n}\n\n/**\n * The empty list\n */\nvar emptyList = null\n\n/**\n * Get the head of a list.\n *\n * Ie, head(cons(a,b)) = a\n */\nvar head = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])(0)\n\n/**\n * Get the tail of a list.\n *\n * Ie, tail(cons(a,b)) = b\n */\nvar tail = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])(1)\n\n/**\n * Converts an array to a list\n *\n * asList([a,b,c])\n *\n * is equivalent to:\n *\n * cons(a, cons(b, cons(c, emptyList)))\n **/\nfunction arrayAsList (inputArray) {\n return reverseList(\n inputArray.reduce(\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"e\" /* flip */])(cons),\n emptyList\n )\n )\n}\n\n/**\n * A varargs version of arrayAsList. Works a bit like list\n * in LISP.\n *\n * list(a,b,c)\n *\n * is equivalent to:\n *\n * cons(a, cons(b, cons(c, emptyList)))\n */\nvar list = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"k\" /* varArgs */])(arrayAsList)\n\n/**\n * Convert a list back to a js native array\n */\nfunction listAsArray (list) {\n return foldR(function (arraySoFar, listItem) {\n arraySoFar.unshift(listItem)\n return arraySoFar\n }, [], list)\n}\n\n/**\n * Map a function over a list\n */\nfunction map (fn, list) {\n return list\n ? cons(fn(head(list)), map(fn, tail(list)))\n : emptyList\n}\n\n/**\n * foldR implementation. Reduce a list down to a single value.\n *\n * @pram {Function} fn (rightEval, curVal) -> result\n */\nfunction foldR (fn, startValue, list) {\n return list\n ? fn(foldR(fn, startValue, tail(list)), head(list))\n : startValue\n}\n\n/**\n * foldR implementation. Reduce a list down to a single value.\n *\n * @pram {Function} fn (rightEval, curVal) -> result\n */\nfunction foldR1 (fn, list) {\n return tail(list)\n ? fn(foldR1(fn, tail(list)), head(list))\n : head(list)\n}\n\n/**\n * Return a list like the one given but with the first instance equal\n * to item removed\n */\nfunction without (list, test, removedFn) {\n return withoutInner(list, removedFn || __WEBPACK_IMPORTED_MODULE_0__functional__[\"i\" /* noop */])\n\n function withoutInner (subList, removedFn) {\n return subList\n ? (test(head(subList))\n ? (removedFn(head(subList)), tail(subList))\n : cons(head(subList), withoutInner(tail(subList), removedFn))\n )\n : emptyList\n }\n}\n\n/**\n * Returns true if the given function holds for every item in\n * the list, false otherwise\n */\nfunction all (fn, list) {\n return !list ||\n (fn(head(list)) && all(fn, tail(list)))\n}\n\n/**\n * Call every function in a list of functions with the same arguments\n *\n * This doesn't make any sense if we're doing pure functional because\n * it doesn't return anything. Hence, this is only really useful if the\n * functions being called have side-effects.\n */\nfunction applyEach (fnList, args) {\n if (fnList) {\n head(fnList).apply(null, args)\n\n applyEach(tail(fnList), args)\n }\n}\n\n/**\n * Reverse the order of a list\n */\nfunction reverseList (list) {\n // js re-implementation of 3rd solution from:\n // http://www.haskell.org/haskellwiki/99_questions/Solutions/5\n function reverseInner (list, reversedAlready) {\n if (!list) {\n return reversedAlready\n }\n\n return reverseInner(tail(list), cons(head(list), reversedAlready))\n }\n\n return reverseInner(list, emptyList)\n}\n\nfunction first (test, list) {\n return list &&\n (test(head(list))\n ? head(list)\n : first(test, tail(list)))\n}\n\n\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return isOfType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return defined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return hasAllProperties; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n\n\n\n/**\n * This file defines some loosely associated syntactic sugar for\n * Javascript programming\n */\n\n/**\n * Returns true if the given candidate is of type T\n */\nfunction isOfType (T, maybeSomething) {\n return maybeSomething && maybeSomething.constructor === T\n}\n\nvar len = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"c\" /* attr */])('length')\nvar isString = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(isOfType, String)\n\n/**\n * I don't like saying this:\n *\n * foo !=== undefined\n *\n * because of the double-negative. I find this:\n *\n * defined(foo)\n *\n * easier to read.\n */\nfunction defined (value) {\n return value !== undefined\n}\n\n/**\n * Returns true if object o has a key named like every property in\n * the properties array. Will give false if any are missing, or if o\n * is not an object.\n */\nfunction hasAllProperties (fieldList, o) {\n return (o instanceof Object) &&\n Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"a\" /* all */])(function (field) {\n return (field in o)\n }, fieldList)\n}\n\n\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return NODE_OPENED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return NODE_CLOSED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return NODE_SWAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return NODE_DROP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return FAIL_EVENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return ROOT_NODE_FOUND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return ROOT_PATH_FOUND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return HTTP_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return STREAM_DATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return STREAM_END; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ABORTING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return SAX_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return SAX_VALUE_OPEN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return SAX_VALUE_CLOSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return errorReport; });\n/**\n * This file declares some constants to use as names for event types.\n */\n\n// the events which are never exported are kept as\n// the smallest possible representation, in numbers:\nvar _S = 1\n\n// fired whenever a new node starts in the JSON stream:\nvar NODE_OPENED = _S++\n\n// fired whenever a node closes in the JSON stream:\nvar NODE_CLOSED = _S++\n\n// called if a .node callback returns a value -\nvar NODE_SWAP = _S++\nvar NODE_DROP = _S++\n\nvar FAIL_EVENT = 'fail'\n\nvar ROOT_NODE_FOUND = _S++\nvar ROOT_PATH_FOUND = _S++\n\nvar HTTP_START = 'start'\nvar STREAM_DATA = 'data'\nvar STREAM_END = 'end'\nvar ABORTING = _S++\n\n// SAX events butchered from Clarinet\nvar SAX_KEY = _S++\nvar SAX_VALUE_OPEN = _S++\nvar SAX_VALUE_CLOSE = _S++\n\nfunction errorReport (statusCode, body, error) {\n try {\n var jsonBody = JSON.parse(body)\n } catch (e) { }\n\n return {\n statusCode: statusCode,\n body: body,\n jsonBody: jsonBody,\n thrown: error\n }\n}\n\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return namedNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return keyOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return nodeOf; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\n/**\n * Get a new key->node mapping\n *\n * @param {String|Number} key\n * @param {Object|Array|String|Number|null} node a value found in the json\n */\nfunction namedNode (key, node) {\n return {key: key, node: node}\n}\n\n/** get the key of a namedNode */\nvar keyOf = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('key')\n\n/** get the node from a namedNode */\nvar nodeOf = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('node')\n\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return oboe; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaults__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__wire__ = __webpack_require__(9);\n\n\n\n\n\n\n// export public API\nfunction oboe (arg1) {\n // We use duck-typing to detect if the parameter given is a stream, with the\n // below list of parameters.\n // Unpipe and unshift would normally be present on a stream but this breaks\n // compatibility with Request streams.\n // See https://github.com/jimhigson/oboe.js/issues/65\n\n var nodeStreamMethodNames = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"h\" /* list */])('resume', 'pause', 'pipe')\n var isStream = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(\n __WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* hasAllProperties */],\n nodeStreamMethodNames\n )\n\n if (arg1) {\n if (isStream(arg1) || Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"d\" /* isString */])(arg1)) {\n // simple version for GETs. Signature is:\n // oboe( url )\n // or, under node:\n // oboe( readableStream )\n return Object(__WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* applyDefaults */])(\n __WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */],\n arg1 // url\n )\n } else {\n // method signature is:\n // oboe({method:m, url:u, body:b, headers:{...}})\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* applyDefaults */])(\n __WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */],\n arg1.url,\n arg1.method,\n arg1.body,\n arg1.headers,\n arg1.withCredentials,\n arg1.cached\n )\n }\n } else {\n // wire up a no-AJAX, no-stream Oboe. Will have to have content\n // fed in externally and using .emit.\n return Object(__WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */])()\n }\n}\n\n/* oboe.drop is a special value. If a node callback returns this value the\n parsed node is deleted from the JSON\n */\noboe.drop = function () {\n return oboe.drop\n}\n\n\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return incrementalContentBuilder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ROOT_PATH; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lists__ = __webpack_require__(1);\n\n\n\n\n\n/**\n * This file provides various listeners which can be used to build up\n * a changing ascent based on the callbacks provided by Clarinet. It listens\n * to the low-level events from Clarinet and emits higher-level ones.\n *\n * The building up is stateless so to track a JSON file\n * ascentManager.js is required to store the ascent state\n * between calls.\n */\n\n/**\n * A special value to use in the path list to represent the path 'to' a root\n * object (which doesn't really have any path). This prevents the need for\n * special-casing detection of the root object and allows it to be treated\n * like any other object. We might think of this as being similar to the\n * 'unnamed root' domain \".\", eg if I go to\n * http://en.wikipedia.org./wiki/En/Main_page the dot after 'org' deliminates\n * the unnamed root of the DNS.\n *\n * This is kept as an object to take advantage that in Javascript's OO objects\n * are guaranteed to be distinct, therefore no other object can possibly clash\n * with this one. Strings, numbers etc provide no such guarantee.\n **/\nvar ROOT_PATH = {}\n\n/**\n * Create a new set of handlers for clarinet's events, bound to the emit\n * function given.\n */\nfunction incrementalContentBuilder (oboeBus) {\n var emitNodeOpened = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"f\" /* NODE_OPENED */]).emit\n var emitNodeClosed = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"d\" /* NODE_CLOSED */]).emit\n var emitRootOpened = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"i\" /* ROOT_PATH_FOUND */]).emit\n var emitRootClosed = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"h\" /* ROOT_NODE_FOUND */]).emit\n\n function arrayIndicesAreKeys (possiblyInconsistentAscent, newDeepestNode) {\n /* for values in arrays we aren't pre-warned of the coming paths\n (Clarinet gives no call to onkey like it does for values in objects)\n so if we are in an array we need to create this path ourselves. The\n key will be len(parentNode) because array keys are always sequential\n numbers. */\n\n var parentNode = Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(possiblyInconsistentAscent))\n\n return Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"c\" /* isOfType */])(Array, parentNode)\n ? keyFound(possiblyInconsistentAscent,\n Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"e\" /* len */])(parentNode),\n newDeepestNode\n )\n // nothing needed, return unchanged\n : possiblyInconsistentAscent\n }\n\n function nodeOpened (ascent, newDeepestNode) {\n if (!ascent) {\n // we discovered the root node,\n emitRootOpened(newDeepestNode)\n\n return keyFound(ascent, ROOT_PATH, newDeepestNode)\n }\n\n // we discovered a non-root node\n\n var arrayConsistentAscent = arrayIndicesAreKeys(ascent, newDeepestNode)\n var ancestorBranches = Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"l\" /* tail */])(arrayConsistentAscent)\n var previouslyUnmappedName = Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"a\" /* keyOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(arrayConsistentAscent))\n\n appendBuiltContent(\n ancestorBranches,\n previouslyUnmappedName,\n newDeepestNode\n )\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"d\" /* cons */])(\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"b\" /* namedNode */])(previouslyUnmappedName, newDeepestNode),\n ancestorBranches\n )\n }\n\n /**\n * Add a new value to the object we are building up to represent the\n * parsed JSON\n */\n function appendBuiltContent (ancestorBranches, key, node) {\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(ancestorBranches))[key] = node\n }\n\n /**\n * For when we find a new key in the json.\n *\n * @param {String|Number|Object} newDeepestName the key. If we are in an\n * array will be a number, otherwise a string. May take the special\n * value ROOT_PATH if the root node has just been found\n *\n * @param {String|Number|Object|Array|Null|undefined} [maybeNewDeepestNode]\n * usually this won't be known so can be undefined. Can't use null\n * to represent unknown because null is a valid value in JSON\n **/\n function keyFound (ascent, newDeepestName, maybeNewDeepestNode) {\n if (ascent) { // if not root\n // If we have the key but (unless adding to an array) no known value\n // yet. Put that key in the output but against no defined value:\n appendBuiltContent(ascent, newDeepestName, maybeNewDeepestNode)\n }\n\n var ascentWithNewPath = Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"d\" /* cons */])(\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"b\" /* namedNode */])(newDeepestName,\n maybeNewDeepestNode),\n ascent\n )\n\n emitNodeOpened(ascentWithNewPath)\n\n return ascentWithNewPath\n }\n\n /**\n * For when the current node ends.\n */\n function nodeClosed (ascent) {\n emitNodeClosed(ascent)\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"l\" /* tail */])(ascent) ||\n // If there are no nodes left in the ascent the root node\n // just closed. Emit a special event for this:\n emitRootClosed(Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(ascent)))\n }\n\n var contentBuilderHandlers = {}\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"l\" /* SAX_VALUE_OPEN */]] = nodeOpened\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"k\" /* SAX_VALUE_CLOSE */]] = nodeClosed\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"j\" /* SAX_KEY */]] = keyFound\n return contentBuilderHandlers\n}\n\n\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__publicApi__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (__WEBPACK_IMPORTED_MODULE_0__publicApi__[\"a\" /* oboe */]);\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return applyDefaults; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(2);\n\n\nfunction applyDefaults (passthrough, url, httpMethodName, body, headers, withCredentials, cached) {\n headers = headers\n // Shallow-clone the headers array. This allows it to be\n // modified without side effects to the caller. We don't\n // want to change objects that the user passes in.\n ? JSON.parse(JSON.stringify(headers))\n : {}\n\n if (body) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__util__[\"d\" /* isString */])(body)) {\n // If the body is not a string, stringify it. This allows objects to\n // be given which will be sent as JSON.\n body = JSON.stringify(body)\n\n // Default Content-Type to JSON unless given otherwise.\n headers['Content-Type'] = headers['Content-Type'] || 'application/json'\n }\n headers['Content-Length'] = headers['Content-Length'] || body.length\n } else {\n body = null\n }\n\n // support cache busting like jQuery.ajax({cache:false})\n function modifiedUrl (baseUrl, cached) {\n if (cached === false) {\n if (baseUrl.indexOf('?') === -1) {\n baseUrl += '?'\n } else {\n baseUrl += '&'\n }\n\n baseUrl += '_=' + new Date().getTime()\n }\n return baseUrl\n }\n\n return passthrough(httpMethodName || 'GET', modifiedUrl(url, cached), body, headers, withCredentials || false)\n}\n\n\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return wire; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pubSub__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascentManager__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__patternAdapter__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__jsonPath__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__instanceApi__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__libs_clarinet__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__ = __webpack_require__(18);\n\n\n\n\n\n\n\n\n\n\n/**\n * This file sits just behind the API which is used to attain a new\n * Oboe instance. It creates the new components that are required\n * and introduces them to each other.\n */\n\nfunction wire (httpMethodName, contentSource, body, headers, withCredentials) {\n var oboeBus = Object(__WEBPACK_IMPORTED_MODULE_0__pubSub__[\"a\" /* pubSub */])()\n\n // Wire the input stream in if we are given a content source.\n // This will usually be the case. If not, the instance created\n // will have to be passed content from an external source.\n\n if (contentSource) {\n Object(__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__[\"b\" /* streamingHttp */])(oboeBus,\n Object(__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__[\"a\" /* httpTransport */])(),\n httpMethodName,\n contentSource,\n body,\n headers,\n withCredentials\n )\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_6__libs_clarinet__[\"a\" /* clarinet */])(oboeBus)\n\n Object(__WEBPACK_IMPORTED_MODULE_1__ascentManager__[\"a\" /* ascentManager */])(oboeBus, Object(__WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__[\"b\" /* incrementalContentBuilder */])(oboeBus))\n\n Object(__WEBPACK_IMPORTED_MODULE_3__patternAdapter__[\"a\" /* patternAdapter */])(oboeBus, __WEBPACK_IMPORTED_MODULE_4__jsonPath__[\"a\" /* jsonPathCompiler */])\n\n return Object(__WEBPACK_IMPORTED_MODULE_5__instanceApi__[\"a\" /* instanceApi */])(oboeBus, contentSource)\n}\n\n\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return pubSub; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n\n\n\n/**\n * pubSub is a curried interface for listening to and emitting\n * events.\n *\n * If we get a bus:\n *\n * var bus = pubSub();\n *\n * We can listen to event 'foo' like:\n *\n * bus('foo').on(myCallback)\n *\n * And emit event foo like:\n *\n * bus('foo').emit()\n *\n * or, with a parameter:\n *\n * bus('foo').emit('bar')\n *\n * All functions can be cached and don't need to be\n * bound. Ie:\n *\n * var fooEmitter = bus('foo').emit\n * fooEmitter('bar'); // emit an event\n * fooEmitter('baz'); // emit another\n *\n * There's also an uncurried[1] shortcut for .emit and .on:\n *\n * bus.on('foo', callback)\n * bus.emit('foo', 'bar')\n *\n * [1]: http://zvon.org/other/haskell/Outputprelude/uncurry_f.html\n */\nfunction pubSub () {\n var singles = {}\n var newListener = newSingle('newListener')\n var removeListener = newSingle('removeListener')\n\n function newSingle (eventName) {\n singles[eventName] = Object(__WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__[\"a\" /* singleEventPubSub */])(\n eventName,\n newListener,\n removeListener\n )\n return singles[eventName]\n }\n\n /** pubSub instances are functions */\n function pubSubInstance (eventName) {\n return singles[eventName] || newSingle(eventName)\n }\n\n // add convenience EventEmitter-style uncurried form of 'emit' and 'on'\n ['emit', 'on', 'un'].forEach(function (methodName) {\n pubSubInstance[methodName] = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"k\" /* varArgs */])(function (eventName, parameters) {\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(parameters, pubSubInstance(eventName)[methodName])\n })\n })\n\n return pubSubInstance\n}\n\n\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return singleEventPubSub; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functional__ = __webpack_require__(0);\n\n\n\n\n/**\n * A pub/sub which is responsible for a single event type. A\n * multi-event type event bus is created by pubSub by collecting\n * several of these.\n *\n * @param {String} eventType\n * the name of the events managed by this singleEventPubSub\n * @param {singleEventPubSub} [newListener]\n * place to notify of new listeners\n * @param {singleEventPubSub} [removeListener]\n * place to notify of when listeners are removed\n */\nfunction singleEventPubSub (eventType, newListener, removeListener) {\n /** we are optimised for emitting events over firing them.\n * As well as the tuple list which stores event ids and\n * listeners there is a list with just the listeners which\n * can be iterated more quickly when we are emitting\n */\n var listenerTupleList,\n listenerList\n\n function hasId (id) {\n return function (tuple) {\n return tuple.id === id\n }\n }\n\n return {\n\n /**\n * @param {Function} listener\n * @param {*} listenerId\n * an id that this listener can later by removed by.\n * Can be of any type, to be compared to other ids using ==\n */\n on: function (listener, listenerId) {\n var tuple = {\n listener: listener,\n id: listenerId || listener // when no id is given use the\n // listener function as the id\n }\n\n if (newListener) {\n newListener.emit(eventType, listener, tuple.id)\n }\n\n listenerTupleList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"d\" /* cons */])(tuple, listenerTupleList)\n listenerList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"d\" /* cons */])(listener, listenerList)\n\n return this // chaining\n },\n\n emit: function () {\n Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"b\" /* applyEach */])(listenerList, arguments)\n },\n\n un: function (listenerId) {\n var removed\n\n listenerTupleList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"m\" /* without */])(\n listenerTupleList,\n hasId(listenerId),\n function (tuple) {\n removed = tuple\n }\n )\n\n if (removed) {\n listenerList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"m\" /* without */])(listenerList, function (listener) {\n return listener === removed.listener\n })\n\n if (removeListener) {\n removeListener.emit(eventType, removed.listener, removed.id)\n }\n }\n },\n\n listeners: function () {\n // differs from Node EventEmitter: returns list, not array\n return listenerList\n },\n\n hasListener: function (listenerId) {\n var test = listenerId ? hasId(listenerId) : __WEBPACK_IMPORTED_MODULE_2__functional__[\"a\" /* always */]\n\n return Object(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* defined */])(Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"e\" /* first */])(test, listenerTupleList))\n }\n }\n}\n\n\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ascentManager; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lists__ = __webpack_require__(1);\n\n\n\n/**\n * A bridge used to assign stateless functions to listen to clarinet.\n *\n * As well as the parameter from clarinet, each callback will also be passed\n * the result of the last callback.\n *\n * This may also be used to clear all listeners by assigning zero handlers:\n *\n * ascentManager( clarinet, {} )\n */\nfunction ascentManager (oboeBus, handlers) {\n 'use strict'\n\n var listenerId = {}\n var ascent\n\n function stateAfter (handler) {\n return function (param) {\n ascent = handler(ascent, param)\n }\n }\n\n for (var eventName in handlers) {\n oboeBus(eventName).on(stateAfter(handlers[eventName]), listenerId)\n }\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"g\" /* NODE_SWAP */]).on(function (newNode) {\n var oldHead = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ascent)\n var key = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"a\" /* keyOf */])(oldHead)\n var ancestors = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"l\" /* tail */])(ascent)\n var parentNode\n\n if (ancestors) {\n parentNode = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ancestors))\n parentNode[key] = newNode\n }\n })\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"e\" /* NODE_DROP */]).on(function () {\n var oldHead = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ascent)\n var key = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"a\" /* keyOf */])(oldHead)\n var ancestors = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"l\" /* tail */])(ascent)\n var parentNode\n\n if (ancestors) {\n parentNode = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ancestors))\n\n delete parentNode[key]\n }\n })\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* ABORTING */]).on(function () {\n for (var eventName in handlers) {\n oboeBus(eventName).un(listenerId)\n }\n })\n}\n\n\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return patternAdapter; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ascent__ = __webpack_require__(4);\n\n\n\n\n/**\n * The pattern adaptor listens for newListener and removeListener\n * events. When patterns are added or removed it compiles the JSONPath\n * and wires them up.\n *\n * When nodes and paths are found it emits the fully-qualified match\n * events with parameters ready to ship to the outside world\n */\n\nfunction patternAdapter (oboeBus, jsonPathCompiler) {\n var predicateEventMap = {\n node: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"d\" /* NODE_CLOSED */]),\n path: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"f\" /* NODE_OPENED */])\n }\n\n function emitMatchingNode (emitMatch, node, ascent) {\n /*\n We're now calling to the outside world where Lisp-style\n lists will not be familiar. Convert to standard arrays.\n\n Also, reverse the order because it is more common to\n list paths \"root to leaf\" than \"leaf to root\" */\n var descent = Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"k\" /* reverseList */])(ascent)\n\n emitMatch(\n node,\n\n // To make a path, strip off the last item which is the special\n // ROOT_PATH token for the 'path' to the root node\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"i\" /* listAsArray */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"l\" /* tail */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"j\" /* map */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"a\" /* keyOf */], descent))), // path\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"i\" /* listAsArray */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"j\" /* map */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */], descent)) // ancestors\n )\n }\n\n /*\n * Set up the catching of events such as NODE_CLOSED and NODE_OPENED and, if\n * matching the specified pattern, propagate to pattern-match events such as\n * oboeBus('node:!')\n *\n *\n *\n * @param {Function} predicateEvent\n * either oboeBus(NODE_CLOSED) or oboeBus(NODE_OPENED).\n * @param {Function} compiledJsonPath\n */\n function addUnderlyingListener (fullEventName, predicateEvent, compiledJsonPath) {\n var emitMatch = oboeBus(fullEventName).emit\n\n predicateEvent.on(function (ascent) {\n var maybeMatchingMapping = compiledJsonPath(ascent)\n\n /* Possible values for maybeMatchingMapping are now:\n\n false:\n we did not match\n\n an object/array/string/number/null:\n we matched and have the node that matched.\n Because nulls are valid json values this can be null.\n\n undefined:\n we matched but don't have the matching node yet.\n ie, we know there is an upcoming node that matches but we\n can't say anything else about it.\n */\n if (maybeMatchingMapping !== false) {\n emitMatchingNode(\n emitMatch,\n Object(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */])(maybeMatchingMapping),\n ascent\n )\n }\n }, fullEventName)\n\n oboeBus('removeListener').on(function (removedEventName) {\n // if the fully qualified match event listener is later removed, clean up\n // by removing the underlying listener if it was the last using that pattern:\n\n if (removedEventName === fullEventName) {\n if (!oboeBus(removedEventName).listeners()) {\n predicateEvent.un(fullEventName)\n }\n }\n })\n }\n\n oboeBus('newListener').on(function (fullEventName) {\n var match = /(node|path):(.*)/.exec(fullEventName)\n\n if (match) {\n var predicateEvent = predicateEventMap[match[1]]\n\n if (!predicateEvent.hasListener(fullEventName)) {\n addUnderlyingListener(\n fullEventName,\n predicateEvent,\n jsonPathCompiler(match[2])\n )\n }\n }\n })\n}\n\n\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return jsonPathCompiler; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__ = __webpack_require__(15);\n\n\n\n\n\n\n\n/**\n * The jsonPath evaluator compiler used for Oboe.js.\n *\n * One function is exposed. This function takes a String JSONPath spec and\n * returns a function to test candidate ascents for matches.\n *\n * String jsonPath -> (List ascent) -> Boolean|Object\n *\n * This file is coded in a pure functional style. That is, no function has\n * side effects, every function evaluates to the same value for the same\n * arguments and no variables are reassigned.\n */\n// the call to jsonPathSyntax injects the token syntaxes that are needed\n// inside the compiler\nvar jsonPathCompiler = Object(__WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__[\"a\" /* jsonPathSyntax */])(function (pathNodeSyntax,\n doubleDotSyntax,\n dotSyntax,\n bangSyntax,\n emptySyntax) {\n var CAPTURING_INDEX = 1\n var NAME_INDEX = 2\n var FIELD_LIST_INDEX = 3\n\n var headKey = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"a\" /* keyOf */], __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n var headNode = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */], __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n\n /**\n * Create an evaluator function for a named path node, expressed in the\n * JSONPath like:\n * foo\n * [\"bar\"]\n * [2]\n */\n function nameClause (previousExpr, detection) {\n var name = detection[NAME_INDEX]\n\n var matchesName = (!name || name === '*')\n ? __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n : function (ascent) { return String(headKey(ascent)) === name }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(matchesName, previousExpr)\n }\n\n /**\n * Create an evaluator function for a a duck-typed node, expressed like:\n *\n * {spin, taste, colour}\n * .particle{spin, taste, colour}\n * *{spin, taste, colour}\n */\n function duckTypeClause (previousExpr, detection) {\n var fieldListStr = detection[FIELD_LIST_INDEX]\n\n if (!fieldListStr) { return previousExpr } // don't wrap at all, return given expr as-is\n\n var hasAllrequiredFields = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"j\" /* partialComplete */])(\n __WEBPACK_IMPORTED_MODULE_3__util__[\"b\" /* hasAllProperties */],\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"c\" /* arrayAsList */])(fieldListStr.split(/\\W+/))\n )\n\n var isMatch = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(\n hasAllrequiredFields,\n headNode\n )\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(isMatch, previousExpr)\n }\n\n /**\n * Expression for $, returns the evaluator function\n */\n function capture (previousExpr, detection) {\n // extract meaning from the detection\n var capturing = !!detection[CAPTURING_INDEX]\n\n if (!capturing) { return previousExpr } // don't wrap at all, return given expr as-is\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(previousExpr, __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n }\n\n /**\n * Create an evaluator function that moves onto the next item on the\n * lists. This function is the place where the logic to move up a\n * level in the ascent exists.\n *\n * Eg, for JSONPath \".foo\" we need skip1(nameClause(always, [,'foo']))\n */\n function skip1 (previousExpr) {\n if (previousExpr === __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]) {\n /* If there is no previous expression this consume command\n is at the start of the jsonPath.\n Since JSONPath specifies what we'd like to find but not\n necessarily everything leading down to it, when running\n out of JSONPath to check against we default to true */\n return __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n }\n\n /** return true if the ascent we have contains only the JSON root,\n * false otherwise\n */\n function notAtRoot (ascent) {\n return headKey(ascent) !== __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__[\"a\" /* ROOT_PATH */]\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(\n /* If we're already at the root but there are more\n expressions to satisfy, can't consume any more. No match.\n\n This check is why none of the other exprs have to be able\n to handle empty lists; skip1 is the only evaluator that\n moves onto the next token and it refuses to do so once it\n reaches the last item in the list. */\n notAtRoot,\n\n /* We are not at the root of the ascent yet.\n Move to the next level of the ascent by handing only\n the tail to the previous expression */\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(previousExpr, __WEBPACK_IMPORTED_MODULE_1__lists__[\"l\" /* tail */])\n )\n }\n\n /**\n * Create an evaluator function for the .. (double dot) token. Consumes\n * zero or more levels of the ascent, the fewest that are required to find\n * a match when given to previousExpr.\n */\n function skipMany (previousExpr) {\n if (previousExpr === __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]) {\n /* If there is no previous expression this consume command\n is at the start of the jsonPath.\n Since JSONPath specifies what we'd like to find but not\n necessarily everything leading down to it, when running\n out of JSONPath to check against we default to true */\n return __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n }\n\n // In JSONPath .. is equivalent to !.. so if .. reaches the root\n // the match has succeeded. Ie, we might write ..foo or !..foo\n // and both should match identically.\n var terminalCaseWhenArrivingAtRoot = rootExpr()\n var terminalCaseWhenPreviousExpressionIsSatisfied = previousExpr\n var recursiveCase = skip1(function (ascent) {\n return cases(ascent)\n })\n\n var cases = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n terminalCaseWhenArrivingAtRoot\n , terminalCaseWhenPreviousExpressionIsSatisfied\n , recursiveCase\n )\n\n return cases\n }\n\n /**\n * Generate an evaluator for ! - matches only the root element of the json\n * and ignores any previous expressions since nothing may precede !.\n */\n function rootExpr () {\n return function (ascent) {\n return headKey(ascent) === __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__[\"a\" /* ROOT_PATH */]\n }\n }\n\n /**\n * Generate a statement wrapper to sit around the outermost\n * clause evaluator.\n *\n * Handles the case where the capturing is implicit because the JSONPath\n * did not contain a '$' by returning the last node.\n */\n function statementExpr (lastClause) {\n return function (ascent) {\n // kick off the evaluation by passing through to the last clause\n var exprMatch = lastClause(ascent)\n\n return exprMatch === true ? Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])(ascent) : exprMatch\n }\n }\n\n /**\n * For when a token has been found in the JSONPath input.\n * Compiles the parser for that token and returns in combination with the\n * parser already generated.\n *\n * @param {Function} exprs a list of the clause evaluator generators for\n * the token that was found\n * @param {Function} parserGeneratedSoFar the parser already found\n * @param {Array} detection the match given by the regex engine when\n * the feature was found\n */\n function expressionsReader (exprs, parserGeneratedSoFar, detection) {\n // if exprs is zero-length foldR will pass back the\n // parserGeneratedSoFar as-is so we don't need to treat\n // this as a special case\n\n return Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"f\" /* foldR */])(\n function (parserGeneratedSoFar, expr) {\n return expr(parserGeneratedSoFar, detection)\n },\n parserGeneratedSoFar,\n exprs\n )\n }\n\n /**\n * If jsonPath matches the given detector function, creates a function which\n * evaluates against every clause in the clauseEvaluatorGenerators. The\n * created function is propagated to the onSuccess function, along with\n * the remaining unparsed JSONPath substring.\n *\n * The intended use is to create a clauseMatcher by filling in\n * the first two arguments, thus providing a function that knows\n * some syntax to match and what kind of generator to create if it\n * finds it. The parameter list once completed is:\n *\n * (jsonPath, parserGeneratedSoFar, onSuccess)\n *\n * onSuccess may be compileJsonPathToFunction, to recursively continue\n * parsing after finding a match or returnFoundParser to stop here.\n */\n function generateClauseReaderIfTokenFound (\n\n tokenDetector, clauseEvaluatorGenerators,\n\n jsonPath, parserGeneratedSoFar, onSuccess) {\n var detected = tokenDetector(jsonPath)\n\n if (detected) {\n var compiledParser = expressionsReader(\n clauseEvaluatorGenerators,\n parserGeneratedSoFar,\n detected\n )\n\n var remainingUnparsedJsonPath = jsonPath.substr(Object(__WEBPACK_IMPORTED_MODULE_3__util__[\"e\" /* len */])(detected[0]))\n\n return onSuccess(remainingUnparsedJsonPath, compiledParser)\n }\n }\n\n /**\n * Partially completes generateClauseReaderIfTokenFound above.\n */\n function clauseMatcher (tokenDetector, exprs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"j\" /* partialComplete */])(\n generateClauseReaderIfTokenFound,\n tokenDetector,\n exprs\n )\n }\n\n /**\n * clauseForJsonPath is a function which attempts to match against\n * several clause matchers in order until one matches. If non match the\n * jsonPath expression is invalid and an error is thrown.\n *\n * The parameter list is the same as a single clauseMatcher:\n *\n * (jsonPath, parserGeneratedSoFar, onSuccess)\n */\n var clauseForJsonPath = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n\n clauseMatcher(pathNodeSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(capture,\n duckTypeClause,\n nameClause,\n skip1))\n\n , clauseMatcher(doubleDotSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(skipMany))\n\n // dot is a separator only (like whitespace in other languages) but\n // rather than make it a special case, use an empty list of\n // expressions when this token is found\n , clauseMatcher(dotSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])())\n\n , clauseMatcher(bangSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(capture,\n rootExpr))\n\n , clauseMatcher(emptySyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(statementExpr))\n\n , function (jsonPath) {\n throw Error('\"' + jsonPath + '\" could not be tokenised')\n }\n )\n\n /**\n * One of two possible values for the onSuccess argument of\n * generateClauseReaderIfTokenFound.\n *\n * When this function is used, generateClauseReaderIfTokenFound simply\n * returns the compiledParser that it made, regardless of if there is\n * any remaining jsonPath to be compiled.\n */\n function returnFoundParser (_remainingJsonPath, compiledParser) {\n return compiledParser\n }\n\n /**\n * Recursively compile a JSONPath expression.\n *\n * This function serves as one of two possible values for the onSuccess\n * argument of generateClauseReaderIfTokenFound, meaning continue to\n * recursively compile. Otherwise, returnFoundParser is given and\n * compilation terminates.\n */\n function compileJsonPathToFunction (uncompiledJsonPath,\n parserGeneratedSoFar) {\n /**\n * On finding a match, if there is remaining text to be compiled\n * we want to either continue parsing using a recursive call to\n * compileJsonPathToFunction. Otherwise, we want to stop and return\n * the parser that we have found so far.\n */\n var onFind = uncompiledJsonPath\n ? compileJsonPathToFunction\n : returnFoundParser\n\n return clauseForJsonPath(\n uncompiledJsonPath,\n parserGeneratedSoFar,\n onFind\n )\n }\n\n /**\n * This is the function that we expose to the rest of the library.\n */\n return function (jsonPath) {\n try {\n // Kick off the recursive parsing of the jsonPath\n return compileJsonPathToFunction(jsonPath, __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */])\n } catch (e) {\n throw Error('Could not compile \"' + jsonPath +\n '\" because ' + e.message\n )\n }\n }\n})\n\n\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return jsonPathSyntax; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\nvar jsonPathSyntax = (function () {\n /**\n * Export a regular expression as a simple function by exposing just\n * the Regex#exec. This allows regex tests to be used under the same\n * interface as differently implemented tests, or for a user of the\n * tests to not concern themselves with their implementation as regular\n * expressions.\n *\n * This could also be expressed point-free as:\n * Function.prototype.bind.bind(RegExp.prototype.exec),\n *\n * But that's far too confusing! (and not even smaller once minified\n * and gzipped)\n */\n var regexDescriptor = function regexDescriptor (regex) {\n return regex.exec.bind(regex)\n }\n\n /**\n * Join several regular expressions and express as a function.\n * This allows the token patterns to reuse component regular expressions\n * instead of being expressed in full using huge and confusing regular\n * expressions.\n */\n var jsonPathClause = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"k\" /* varArgs */])(function (componentRegexes) {\n // The regular expressions all start with ^ because we\n // only want to find matches at the start of the\n // JSONPath fragment we are inspecting\n componentRegexes.unshift(/^/)\n\n return regexDescriptor(\n RegExp(\n componentRegexes.map(Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('source')).join('')\n )\n )\n })\n\n var possiblyCapturing = /(\\$?)/\n var namedNode = /([\\w-_]+|\\*)/\n var namePlaceholder = /()/\n var nodeInArrayNotation = /\\[\"([^\"]+)\"\\]/\n var numberedNodeInArrayNotation = /\\[(\\d+|\\*)\\]/\n var fieldList = /{([\\w ]*?)}/\n var optionalFieldList = /(?:{([\\w ]*?)})?/\n\n // foo or *\n var jsonPathNamedNodeInObjectNotation = jsonPathClause(\n possiblyCapturing,\n namedNode,\n optionalFieldList\n )\n\n // [\"foo\"]\n var jsonPathNamedNodeInArrayNotation = jsonPathClause(\n possiblyCapturing,\n nodeInArrayNotation,\n optionalFieldList\n )\n\n // [2] or [*]\n var jsonPathNumberedNodeInArrayNotation = jsonPathClause(\n possiblyCapturing,\n numberedNodeInArrayNotation,\n optionalFieldList\n )\n\n // {a b c}\n var jsonPathPureDuckTyping = jsonPathClause(\n possiblyCapturing,\n namePlaceholder,\n fieldList\n )\n\n // ..\n var jsonPathDoubleDot = jsonPathClause(/\\.\\./)\n\n // .\n var jsonPathDot = jsonPathClause(/\\./)\n\n // !\n var jsonPathBang = jsonPathClause(\n possiblyCapturing,\n /!/\n )\n\n // nada!\n var emptyString = jsonPathClause(/$/)\n\n /* We export only a single function. When called, this function injects\n into another function the descriptors from above.\n */\n return function (fn) {\n return fn(\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n jsonPathNamedNodeInObjectNotation\n , jsonPathNamedNodeInArrayNotation\n , jsonPathNumberedNodeInArrayNotation\n , jsonPathPureDuckTyping\n )\n , jsonPathDoubleDot\n , jsonPathDot\n , jsonPathBang\n , emptyString\n )\n }\n}())\n\n\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return instanceApi; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__publicApi__ = __webpack_require__(5);\n\n\n\n\n\n/**\n * The instance API is the thing that is returned when oboe() is called.\n * it allows:\n *\n * - listeners for various events to be added and removed\n * - the http response header/headers to be read\n */\nfunction instanceApi (oboeBus, contentSource) {\n var oboeApi\n var fullyQualifiedNamePattern = /^(node|path):./\n var rootNodeFinishedEvent = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"h\" /* ROOT_NODE_FOUND */])\n var emitNodeDrop = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"e\" /* NODE_DROP */]).emit\n var emitNodeSwap = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"g\" /* NODE_SWAP */]).emit\n\n /**\n * Add any kind of listener that the instance api exposes\n */\n var addListener = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"k\" /* varArgs */])(function (eventId, parameters) {\n if (oboeApi[eventId]) {\n // for events added as .on(event, callback), if there is a\n // .event() equivalent with special behaviour , pass through\n // to that:\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(parameters, oboeApi[eventId])\n } else {\n // we have a standard Node.js EventEmitter 2-argument call.\n // The first parameter is the listener.\n var event = oboeBus(eventId)\n var listener = parameters[0]\n\n if (fullyQualifiedNamePattern.test(eventId)) {\n // allow fully-qualified node/path listeners\n // to be added\n addForgettableCallback(event, wrapCallbackToSwapNodeIfSomethingReturned(listener))\n } else {\n // the event has no special handling, pass through\n // directly onto the event bus:\n event.on(listener)\n }\n }\n\n return oboeApi // chaining\n })\n\n /**\n * Remove any kind of listener that the instance api exposes\n */\n var removeListener = function (eventId, p2, p3) {\n if (eventId === 'done') {\n rootNodeFinishedEvent.un(p2)\n } else if (eventId === 'node' || eventId === 'path') {\n // allow removal of node and path\n oboeBus.un(eventId + ':' + p2, p3)\n } else {\n // we have a standard Node.js EventEmitter 2-argument call.\n // The second parameter is the listener. This may be a call\n // to remove a fully-qualified node/path listener but requires\n // no special handling\n var listener = p2\n\n oboeBus(eventId).un(listener)\n }\n\n return oboeApi // chaining\n }\n\n /**\n * Add a callback, wrapped in a try/catch so as to not break the\n * execution of Oboe if an exception is thrown (fail events are\n * fired instead)\n *\n * The callback is used as the listener id so that it can later be\n * removed using .un(callback)\n */\n function addProtectedCallback (eventName, callback) {\n oboeBus(eventName).on(protectedCallback(callback), callback)\n return oboeApi // chaining\n }\n\n /**\n * Add a callback where, if .forget() is called during the callback's\n * execution, the callback will be de-registered\n */\n function addForgettableCallback (event, callback, listenerId) {\n // listenerId is optional and if not given, the original\n // callback will be used\n listenerId = listenerId || callback\n\n var safeCallback = protectedCallback(callback)\n\n event.on(function () {\n var discard = false\n\n oboeApi.forget = function () {\n discard = true\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(arguments, safeCallback)\n\n delete oboeApi.forget\n\n if (discard) {\n event.un(listenerId)\n }\n }, listenerId)\n\n return oboeApi // chaining\n }\n\n /**\n * wrap a callback so that if it throws, Oboe.js doesn't crash but instead\n * throw the error in another event loop\n */\n function protectedCallback (callback) {\n return function () {\n try {\n return callback.apply(oboeApi, arguments)\n } catch (e) {\n setTimeout(function () {\n throw new Error(e.message)\n })\n }\n }\n }\n\n /**\n * Return the fully qualified event for when a pattern matches\n * either a node or a path\n *\n * @param type {String} either 'node' or 'path'\n */\n function fullyQualifiedPatternMatchEvent (type, pattern) {\n return oboeBus(type + ':' + pattern)\n }\n\n function wrapCallbackToSwapNodeIfSomethingReturned (callback) {\n return function () {\n var returnValueFromCallback = callback.apply(this, arguments)\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* defined */])(returnValueFromCallback)) {\n if (returnValueFromCallback === __WEBPACK_IMPORTED_MODULE_3__publicApi__[\"a\" /* oboe */].drop) {\n emitNodeDrop()\n } else {\n emitNodeSwap(returnValueFromCallback)\n }\n }\n }\n }\n\n function addSingleNodeOrPathListener (eventId, pattern, callback) {\n var effectiveCallback\n\n if (eventId === 'node') {\n effectiveCallback = wrapCallbackToSwapNodeIfSomethingReturned(callback)\n } else {\n effectiveCallback = callback\n }\n\n addForgettableCallback(\n fullyQualifiedPatternMatchEvent(eventId, pattern),\n effectiveCallback,\n callback\n )\n }\n\n /**\n * Add several listeners at a time, from a map\n */\n function addMultipleNodeOrPathListeners (eventId, listenerMap) {\n for (var pattern in listenerMap) {\n addSingleNodeOrPathListener(eventId, pattern, listenerMap[pattern])\n }\n }\n\n /**\n * implementation behind .onPath() and .onNode()\n */\n function addNodeOrPathListenerApi (eventId, jsonPathOrListenerMap, callback) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"d\" /* isString */])(jsonPathOrListenerMap)) {\n addSingleNodeOrPathListener(eventId, jsonPathOrListenerMap, callback)\n } else {\n addMultipleNodeOrPathListeners(eventId, jsonPathOrListenerMap)\n }\n\n return oboeApi // chaining\n }\n\n // some interface methods are only filled in after we receive\n // values and are noops before that:\n oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"i\" /* ROOT_PATH_FOUND */]).on(function (rootNode) {\n oboeApi.root = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"f\" /* functor */])(rootNode)\n })\n\n /**\n * When content starts make the headers readable through the\n * instance API\n */\n oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"c\" /* HTTP_START */]).on(function (_statusCode, headers) {\n oboeApi.header = function (name) {\n return name ? headers[name]\n : headers\n }\n })\n\n /**\n * Construct and return the public API of the Oboe instance to be\n * returned to the calling application\n */\n oboeApi = {\n on: addListener,\n addListener: addListener,\n removeListener: removeListener,\n emit: oboeBus.emit,\n\n node: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addNodeOrPathListenerApi, 'node'),\n path: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addNodeOrPathListenerApi, 'path'),\n\n done: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addForgettableCallback, rootNodeFinishedEvent),\n start: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addProtectedCallback, __WEBPACK_IMPORTED_MODULE_0__events__[\"c\" /* HTTP_START */]),\n\n // fail doesn't use protectedCallback because\n // could lead to non-terminating loops\n fail: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"b\" /* FAIL_EVENT */]).on,\n\n // public api calling abort fires the ABORTING event\n abort: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"a\" /* ABORTING */]).emit,\n\n // initially return nothing for header and root\n header: __WEBPACK_IMPORTED_MODULE_1__functional__[\"i\" /* noop */],\n root: __WEBPACK_IMPORTED_MODULE_1__functional__[\"i\" /* noop */],\n\n source: contentSource\n }\n\n return oboeApi\n}\n\n\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return clarinet; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n\n\n/*\n This is a slightly hacked-up browser only version of clarinet\n\n * some features removed to help keep browser Oboe under\n the 5k micro-library limit\n * plug directly into event bus\n\n For the original go here:\n https://github.com/dscape/clarinet\n\n We receive the events:\n STREAM_DATA\n STREAM_END\n\n We emit the events:\n SAX_KEY\n SAX_VALUE_OPEN\n SAX_VALUE_CLOSE\n FAIL_EVENT\n */\n\nfunction clarinet (eventBus) {\n 'use strict'\n\n // shortcut some events on the bus\n var emitSaxKey = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"j\" /* SAX_KEY */]).emit\n var emitValueOpen = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"l\" /* SAX_VALUE_OPEN */]).emit\n var emitValueClose = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"k\" /* SAX_VALUE_CLOSE */]).emit\n var emitFail = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"b\" /* FAIL_EVENT */]).emit\n\n var MAX_BUFFER_LENGTH = 64 * 1024\n var stringTokenPattern = /[\\\\\"\\n]/g\n var _n = 0\n\n // states\n var BEGIN = _n++\n var VALUE = _n++ // general stuff\n var OPEN_OBJECT = _n++ // {\n var CLOSE_OBJECT = _n++ // }\n var OPEN_ARRAY = _n++ // [\n var CLOSE_ARRAY = _n++ // ]\n var STRING = _n++ // \"\"\n var OPEN_KEY = _n++ // , \"a\"\n var CLOSE_KEY = _n++ // :\n var TRUE = _n++ // r\n var TRUE2 = _n++ // u\n var TRUE3 = _n++ // e\n var FALSE = _n++ // a\n var FALSE2 = _n++ // l\n var FALSE3 = _n++ // s\n var FALSE4 = _n++ // e\n var NULL = _n++ // u\n var NULL2 = _n++ // l\n var NULL3 = _n++ // l\n var NUMBER_DECIMAL_POINT = _n++ // .\n var NUMBER_DIGIT = _n // [0-9]\n\n // setup initial parser values\n var bufferCheckPosition = MAX_BUFFER_LENGTH\n var latestError\n var c\n var p\n var textNode\n var numberNode = ''\n var slashed = false\n var closed = false\n var state = BEGIN\n var stack = []\n var unicodeS = null\n var unicodeI = 0\n var depth = 0\n var position = 0\n var column = 0 // mostly for error reporting\n var line = 1\n\n function checkBufferLength () {\n var maxActual = 0\n\n if (textNode !== undefined && textNode.length > MAX_BUFFER_LENGTH) {\n emitError('Max buffer length exceeded: textNode')\n maxActual = Math.max(maxActual, textNode.length)\n }\n if (numberNode.length > MAX_BUFFER_LENGTH) {\n emitError('Max buffer length exceeded: numberNode')\n maxActual = Math.max(maxActual, numberNode.length)\n }\n\n bufferCheckPosition = (MAX_BUFFER_LENGTH - maxActual) +\n position\n }\n\n eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"m\" /* STREAM_DATA */]).on(handleData)\n\n /* At the end of the http content close the clarinet\n This will provide an error if the total content provided was not\n valid json, ie if not all arrays, objects and Strings closed properly */\n eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"n\" /* STREAM_END */]).on(handleStreamEnd)\n\n function emitError (errorString) {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n\n latestError = Error(errorString + '\\nLn: ' + line +\n '\\nCol: ' + column +\n '\\nChr: ' + c)\n\n emitFail(Object(__WEBPACK_IMPORTED_MODULE_0__events__[\"o\" /* errorReport */])(undefined, undefined, latestError))\n }\n\n function handleStreamEnd () {\n if (state === BEGIN) {\n // Handle the case where the stream closes without ever receiving\n // any input. This isn't an error - response bodies can be blank,\n // particularly for 204 http responses\n\n // Because of how Oboe is currently implemented, we parse a\n // completely empty stream as containing an empty object.\n // This is because Oboe's done event is only fired when the\n // root object of the JSON stream closes.\n\n // This should be decoupled and attached instead to the input stream\n // from the http (or whatever) resource ending.\n // If this decoupling could happen the SAX parser could simply emit\n // zero events on a completely empty input.\n emitValueOpen({})\n emitValueClose()\n\n closed = true\n return\n }\n\n if (state !== VALUE || depth !== 0) { emitError('Unexpected end') }\n\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n\n closed = true\n }\n\n function whitespace (c) {\n return c === '\\r' || c === '\\n' || c === ' ' || c === '\\t'\n }\n\n function handleData (chunk) {\n // this used to throw the error but inside Oboe we will have already\n // gotten the error when it was emitted. The important thing is to\n // not continue with the parse.\n if (latestError) { return }\n\n if (closed) {\n return emitError('Cannot write after close')\n }\n\n var i = 0\n c = chunk[0]\n\n while (c) {\n if (i > 0) {\n p = c\n }\n c = chunk[i++]\n if (!c) break\n\n position++\n if (c === '\\n') {\n line++\n column = 0\n } else column++\n switch (state) {\n case BEGIN:\n if (c === '{') state = OPEN_OBJECT\n else if (c === '[') state = OPEN_ARRAY\n else if (!whitespace(c)) { return emitError('Non-whitespace before {[.') }\n continue\n\n case OPEN_KEY:\n case OPEN_OBJECT:\n if (whitespace(c)) continue\n if (state === OPEN_KEY) stack.push(CLOSE_KEY)\n else {\n if (c === '}') {\n emitValueOpen({})\n emitValueClose()\n state = stack.pop() || VALUE\n continue\n } else stack.push(CLOSE_OBJECT)\n }\n if (c === '\"') { state = STRING } else { return emitError('Malformed object key should start with \" ') }\n continue\n\n case CLOSE_KEY:\n case CLOSE_OBJECT:\n if (whitespace(c)) continue\n\n if (c === ':') {\n if (state === CLOSE_OBJECT) {\n stack.push(CLOSE_OBJECT)\n\n if (textNode !== undefined) {\n // was previously (in upstream Clarinet) one event\n // - object open came with the text of the first\n emitValueOpen({})\n emitSaxKey(textNode)\n textNode = undefined\n }\n depth++\n } else {\n if (textNode !== undefined) {\n emitSaxKey(textNode)\n textNode = undefined\n }\n }\n state = VALUE\n } else if (c === '}') {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n } else if (c === ',') {\n if (state === CLOSE_OBJECT) { stack.push(CLOSE_OBJECT) }\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n state = OPEN_KEY\n } else { return emitError('Bad object') }\n continue\n\n case OPEN_ARRAY: // after an array there always a value\n case VALUE:\n if (whitespace(c)) continue\n if (state === OPEN_ARRAY) {\n emitValueOpen([])\n depth++\n state = VALUE\n if (c === ']') {\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n continue\n } else {\n stack.push(CLOSE_ARRAY)\n }\n }\n if (c === '\"') state = STRING\n else if (c === '{') state = OPEN_OBJECT\n else if (c === '[') state = OPEN_ARRAY\n else if (c === 't') state = TRUE\n else if (c === 'f') state = FALSE\n else if (c === 'n') state = NULL\n else if (c === '-') { // keep and continue\n numberNode += c\n } else if (c === '0') {\n numberNode += c\n state = NUMBER_DIGIT\n } else if ('123456789'.indexOf(c) !== -1) {\n numberNode += c\n state = NUMBER_DIGIT\n } else { return emitError('Bad value') }\n continue\n\n case CLOSE_ARRAY:\n if (c === ',') {\n stack.push(CLOSE_ARRAY)\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n state = VALUE\n } else if (c === ']') {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n } else if (whitespace(c)) { continue } else { return emitError('Bad array') }\n continue\n\n case STRING:\n if (textNode === undefined) {\n textNode = ''\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i - 1\n\n // eslint-disable-next-line no-labels\n STRING_BIGLOOP: while (true) {\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n unicodeS += c\n c = chunk.charAt(i++)\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n textNode += String.fromCharCode(parseInt(unicodeS, 16))\n unicodeI = 0\n starti = i - 1\n } else {\n unicodeI++\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n // eslint-disable-next-line no-labels\n if (!c) break STRING_BIGLOOP\n }\n if (c === '\"' && !slashed) {\n state = stack.pop() || VALUE\n textNode += chunk.substring(starti, i - 1)\n break\n }\n if (c === '\\\\' && !slashed) {\n slashed = true\n textNode += chunk.substring(starti, i - 1)\n c = chunk.charAt(i++)\n if (!c) break\n }\n if (slashed) {\n slashed = false\n if (c === 'n') { textNode += '\\n' } else if (c === 'r') { textNode += '\\r' } else if (c === 't') { textNode += '\\t' } else if (c === 'f') { textNode += '\\f' } else if (c === 'b') { textNode += '\\b' } else if (c === 'u') {\n // \\uxxxx. meh!\n unicodeI = 1\n unicodeS = ''\n } else {\n textNode += c\n }\n c = chunk.charAt(i++)\n starti = i - 1\n if (!c) break\n else continue\n }\n\n stringTokenPattern.lastIndex = i\n var reResult = stringTokenPattern.exec(chunk)\n if (!reResult) {\n i = chunk.length + 1\n textNode += chunk.substring(starti, i - 1)\n break\n }\n i = reResult.index + 1\n c = chunk.charAt(reResult.index)\n if (!c) {\n textNode += chunk.substring(starti, i - 1)\n break\n }\n }\n continue\n\n case TRUE:\n if (!c) continue // strange buffers\n if (c === 'r') state = TRUE2\n else { return emitError('Invalid true started with t' + c) }\n continue\n\n case TRUE2:\n if (!c) continue\n if (c === 'u') state = TRUE3\n else { return emitError('Invalid true started with tr' + c) }\n continue\n\n case TRUE3:\n if (!c) continue\n if (c === 'e') {\n emitValueOpen(true)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid true started with tru' + c) }\n continue\n\n case FALSE:\n if (!c) continue\n if (c === 'a') state = FALSE2\n else { return emitError('Invalid false started with f' + c) }\n continue\n\n case FALSE2:\n if (!c) continue\n if (c === 'l') state = FALSE3\n else { return emitError('Invalid false started with fa' + c) }\n continue\n\n case FALSE3:\n if (!c) continue\n if (c === 's') state = FALSE4\n else { return emitError('Invalid false started with fal' + c) }\n continue\n\n case FALSE4:\n if (!c) continue\n if (c === 'e') {\n emitValueOpen(false)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid false started with fals' + c) }\n continue\n\n case NULL:\n if (!c) continue\n if (c === 'u') state = NULL2\n else { return emitError('Invalid null started with n' + c) }\n continue\n\n case NULL2:\n if (!c) continue\n if (c === 'l') state = NULL3\n else { return emitError('Invalid null started with nu' + c) }\n continue\n\n case NULL3:\n if (!c) continue\n if (c === 'l') {\n emitValueOpen(null)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid null started with nul' + c) }\n continue\n\n case NUMBER_DECIMAL_POINT:\n if (c === '.') {\n numberNode += c\n state = NUMBER_DIGIT\n } else { return emitError('Leading zero not followed by .') }\n continue\n\n case NUMBER_DIGIT:\n if ('0123456789'.indexOf(c) !== -1) numberNode += c\n else if (c === '.') {\n if (numberNode.indexOf('.') !== -1) { return emitError('Invalid number has two dots') }\n numberNode += c\n } else if (c === 'e' || c === 'E') {\n if (numberNode.indexOf('e') !== -1 ||\n numberNode.indexOf('E') !== -1) { return emitError('Invalid number has two exponential') }\n numberNode += c\n } else if (c === '+' || c === '-') {\n if (!(p === 'e' || p === 'E')) { return emitError('Invalid symbol in number') }\n numberNode += c\n } else {\n if (numberNode) {\n emitValueOpen(parseFloat(numberNode))\n emitValueClose()\n numberNode = ''\n }\n i-- // go back one\n state = stack.pop() || VALUE\n }\n continue\n\n default:\n return emitError('Unknown state: ' + state)\n }\n }\n if (position >= bufferCheckPosition) { checkBufferLength() }\n }\n}\n\n\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return httpTransport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return streamingHttp; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__functional__ = __webpack_require__(0);\n\n\n\n\n\n\nfunction httpTransport () {\n return new XMLHttpRequest()\n}\n\n/**\n * A wrapper around the browser XmlHttpRequest object that raises an\n * event whenever a new part of the response is available.\n *\n * In older browsers progressive reading is impossible so all the\n * content is given in a single call. For newer ones several events\n * should be raised, allowing progressive interpretation of the response.\n *\n * @param {Function} oboeBus an event bus local to this Oboe instance\n * @param {XMLHttpRequest} xhr the xhr to use as the transport. Under normal\n * operation, will have been created using httpTransport() above\n * but for tests a stub can be provided instead.\n * @param {String} method one of 'GET' 'POST' 'PUT' 'PATCH' 'DELETE'\n * @param {String} url the url to make a request to\n * @param {String|Null} data some content to be sent with the request.\n * Only valid if method is POST or PUT.\n * @param {Object} [headers] the http request headers to send\n * @param {boolean} withCredentials the XHR withCredentials property will be\n * set to this value\n */\nfunction streamingHttp (oboeBus, xhr, method, url, data, headers, withCredentials) {\n 'use strict'\n\n var emitStreamData = oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"m\" /* STREAM_DATA */]).emit\n var emitFail = oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"b\" /* FAIL_EVENT */]).emit\n var numberOfCharsAlreadyGivenToCallback = 0\n var stillToSendStartEvent = true\n\n // When an ABORTING message is put on the event bus abort\n // the ajax request\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* ABORTING */]).on(function () {\n // if we keep the onreadystatechange while aborting the XHR gives\n // a callback like a successful call so first remove this listener\n // by assigning null:\n xhr.onreadystatechange = null\n\n xhr.abort()\n })\n\n /**\n * Handle input from the underlying xhr: either a state change,\n * the progress event or the request being complete.\n */\n function handleProgress () {\n if (String(xhr.status)[0] === '2') {\n var textSoFar = xhr.responseText\n var newText = (' ' + textSoFar.substr(numberOfCharsAlreadyGivenToCallback)).substr(1)\n\n /* Raise the event for new text.\n\n On older browsers, the new text is the whole response.\n On newer/better ones, the fragment part that we got since\n last progress. */\n\n if (newText) {\n emitStreamData(newText)\n }\n\n numberOfCharsAlreadyGivenToCallback = Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"e\" /* len */])(textSoFar)\n }\n }\n\n if ('onprogress' in xhr) { // detect browser support for progressive delivery\n xhr.onprogress = handleProgress\n }\n\n function sendStartIfNotAlready (xhr) {\n // Internet Explorer is very unreliable as to when xhr.status etc can\n // be read so has to be protected with try/catch and tried again on\n // the next readyState if it fails\n try {\n stillToSendStartEvent && oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"c\" /* HTTP_START */]).emit(\n xhr.status,\n Object(__WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__[\"a\" /* parseResponseHeaders */])(xhr.getAllResponseHeaders()))\n stillToSendStartEvent = false\n } catch (e) { /* do nothing, will try again on next readyState */ }\n }\n\n xhr.onreadystatechange = function () {\n switch (xhr.readyState) {\n case 2: // HEADERS_RECEIVED\n case 3: // LOADING\n return sendStartIfNotAlready(xhr)\n\n case 4: // DONE\n sendStartIfNotAlready(xhr) // if xhr.status hasn't been available yet, it must be NOW, huh IE?\n\n // is this a 2xx http code?\n var successful = String(xhr.status)[0] === '2'\n\n if (successful) {\n // In Chrome 29 (not 28) no onprogress is emitted when a response\n // is complete before the onload. We need to always do handleInput\n // in case we get the load but have not had a final progress event.\n // This looks like a bug and may change in future but let's take\n // the safest approach and assume we might not have received a\n // progress event for each part of the response\n handleProgress()\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"n\" /* STREAM_END */]).emit()\n } else {\n emitFail(Object(__WEBPACK_IMPORTED_MODULE_1__events__[\"o\" /* errorReport */])(\n xhr.status,\n xhr.responseText\n ))\n }\n }\n }\n\n try {\n xhr.open(method, url, true)\n\n for (var headerName in headers) {\n xhr.setRequestHeader(headerName, headers[headerName])\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__[\"a\" /* isCrossOrigin */])(window.location, Object(__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__[\"b\" /* parseUrlOrigin */])(url))) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n }\n\n xhr.withCredentials = withCredentials\n\n xhr.send(data)\n } catch (e) {\n // To keep a consistent interface with Node, we can't emit an event here.\n // Node's streaming http adaptor receives the error as an asynchronous\n // event rather than as an exception. If we emitted now, the Oboe user\n // has had no chance to add a .fail listener so there is no way\n // the event could be useful. For both these reasons defer the\n // firing to the next JS frame.\n window.setTimeout(\n Object(__WEBPACK_IMPORTED_MODULE_4__functional__[\"j\" /* partialComplete */])(emitFail, Object(__WEBPACK_IMPORTED_MODULE_1__events__[\"o\" /* errorReport */])(undefined, undefined, e))\n , 0\n )\n }\n}\n\n\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return isCrossOrigin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return parseUrlOrigin; });\n/**\n * Detect if a given URL is cross-origin in the scope of the\n * current page.\n *\n * Browser only (since cross-origin has no meaning in Node.js)\n *\n * @param {Object} pageLocation - as in window.location\n * @param {Object} ajaxHost - an object like window.location describing the\n * origin of the url that we want to ajax in\n */\nfunction isCrossOrigin (pageLocation, ajaxHost) {\n /*\n * NB: defaultPort only knows http and https.\n * Returns undefined otherwise.\n */\n function defaultPort (protocol) {\n return { 'http:': 80, 'https:': 443 }[protocol]\n }\n\n function portOf (location) {\n // pageLocation should always have a protocol. ajaxHost if no port or\n // protocol is specified, should use the port of the containing page\n\n return String(location.port || defaultPort(location.protocol || pageLocation.protocol))\n }\n\n // if ajaxHost doesn't give a domain, port is the same as pageLocation\n // it can't give a protocol but not a domain\n // it can't give a port but not a domain\n\n return !!((ajaxHost.protocol && (ajaxHost.protocol !== pageLocation.protocol)) ||\n (ajaxHost.host && (ajaxHost.host !== pageLocation.host)) ||\n (ajaxHost.host && (portOf(ajaxHost) !== portOf(pageLocation)))\n )\n}\n\n/* turn any url into an object like window.location */\nfunction parseUrlOrigin (url) {\n // url could be domain-relative\n // url could give a domain\n\n // cross origin means:\n // same domain\n // same port\n // some protocol\n // so, same everything up to the first (single) slash\n // if such is given\n //\n // can ignore everything after that\n\n var URL_HOST_PATTERN = /(\\w+:)?(?:\\/\\/)([\\w.-]+)?(?::(\\d+))?\\/?/\n\n // if no match, use an empty array so that\n // subexpressions 1,2,3 are all undefined\n // and will ultimately return all empty\n // strings as the parse result:\n var urlHostMatch = URL_HOST_PATTERN.exec(url) || []\n\n return {\n protocol: urlHostMatch[1] || '',\n host: urlHostMatch[2] || '',\n port: urlHostMatch[3] || ''\n }\n}\n\n\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return parseResponseHeaders; });\n// based on gist https://gist.github.com/monsur/706839\n\n/**\n * XmlHttpRequest's getAllResponseHeaders() method returns a string of response\n * headers according to the format described here:\n * http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders-method\n * This method parses that string into a user-friendly key/value pair object.\n */\nfunction parseResponseHeaders (headerStr) {\n var headers = {}\n\n headerStr && headerStr.split('\\u000d\\u000a')\n .forEach(function (headerPair) {\n // Can't use split() here because it does the wrong thing\n // if the header value has the string \": \" in it.\n var index = headerPair.indexOf('\\u003a\\u0020')\n\n headers[headerPair.substring(0, index)] =\n headerPair.substring(index + 2)\n })\n\n return headers\n}\n\n\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","module.exports = require('os');\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","var trim = function(string) {\n return string.replace(/^\\s+|\\s+$/g, '');\n}\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n var headersArr = trim(headers).split('\\n')\n\n for (var i = 0; i < headersArr.length; i++) {\n var row = headersArr[i]\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n\n return result\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nconst processFn = (fn, opts) => function () {\n\tconst P = opts.promiseModule;\n\tconst args = new Array(arguments.length);\n\n\tfor (let i = 0; i < arguments.length; i++) {\n\t\targs[i] = arguments[i];\n\t}\n\n\treturn new P((resolve, reject) => {\n\t\tif (opts.errorFirst) {\n\t\t\targs.push(function (err, result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 1; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i - 1] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresults.unshift(err);\n\t\t\t\t\t\treject(results);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(results);\n\t\t\t\t\t}\n\t\t\t\t} else if (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targs.push(function (result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(results);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfn.apply(this, args);\n\t});\n};\n\nmodule.exports = (obj, opts) => {\n\topts = Object.assign({\n\t\texclude: [/.+(Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise\n\t}, opts);\n\n\tconst filter = key => {\n\t\tconst match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\treturn opts.include ? opts.include.some(match) : !opts.exclude.some(match);\n\t};\n\n\tlet ret;\n\tif (typeof obj === 'function') {\n\t\tret = function () {\n\t\t\tif (opts.excludeMain) {\n\t\t\t\treturn obj.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn processFn(obj, opts).apply(this, arguments);\n\t\t};\n\t} else {\n\t\tret = Object.create(Object.getPrototypeOf(obj));\n\t}\n\n\tfor (const key in obj) { // eslint-disable-line guard-for-in\n\t\tconst x = obj[key];\n\t\tret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x;\n\t}\n\n\treturn ret;\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: