{"version":3,"file":"static/chunks/1422-31714c6c8329af53.js","mappings":"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CA,2DACA,CAAC,UAAgE,EACjE,OACA,mBACA,0CACA,CAAK,CACL,kBACA,0FACA,CAAK,CACL,WACA,kCACA,CAAK,CACL,iBACA,8CACA,CAAK,CACL,sBACA,mDACA,CAAK,CACL,kBACA,+CACA,CAAK,CACL,uBACA,oDACA,CAAK,CACL,cACA,qDACA,CAAK,CACL,cACA,gDACA,CAAK,CACL,iCACA,wDACA,CAAK,CACL,sBACA,qDACA,CAAK,CACL,yBACA,sFACA,CAAK,CACL,kCACA,2GACA,CAAK,CACL,wCACA,qEACA,CAAK,CACL,6BACA,0DACA,CAAK,CACL,0BACA,8EACA,CAAK,CACL,uCACA,gEACA,CACA,CCxEA,uBASA,qBAAkB,gDAAqD,EACvE,SACA,YACA,uBACA,0BAGA,mBACA,uCACA,CACA,CCjBA,gBAA2B,EAC3B,UADuC,EACvC,GACA,SAEA,mBACA,uCACA,CACA,CCNA,gBACA,IAAY,gCAA8B,CAAoB,IAC9D,MACA,UAAkB,EAAY,MAAG,IAAH,MAAG,uBAAmC,CAEpE,CCPA,cAUA,sBCHA,iBAA4B,EAC5B,UADwC,EACxC,IAA2B,EAC3B,OACA,qBACA,qCACA,IACA,CAAS,EAET,mBACA,uCACA,CACA,CAOA,8BEzBA,YACA,gBACA,gBACA,cACA,cACA,oBACA,aACA,CAAC,UAA0B,ECL3B,OACA,UACA,QACA,OACA,OACA,QACA,MACA,CAKA,SAKA,gBAA8B,EAAO,MACrC,YACA,aACA,oBAEA,YACA,sBACA,CACA,MACA,eACA,8EACA,IACA,mBACA,CACA,oBACA,GAEA,iBADA,aAWA,aACA,iBACA,aACA,gBAEA,8CACA,qBAEA,WAEA,MADA,KACA,GAEA,OAEA,gCACA,IAAqB,EAAO,sBAC5B,gCAEA,IAAqB,EAAO,oBAC5B,+BAEA,wBACA,IAAyB,EAAO,oBAChC,+BAEA,IAAyB,EAAO,sBAChC,iCAGA,UAA2B,EAAK,IAAI,YAAY,EAAE,UAAU,EAC5D,KACA,uCAEA,EADA,KAAyB,GAAQ,IAAI,KAAO,QAG5C,gBACA,KAAyB,GAAQ,EAAE,KAAO,EAC1C,eAEA,0BACA,gBACA,eACA,SAEA,KAAyB,GAAQ,IAAI,MAAQ,EAAE,EAAI,EACnD,KAAmB,GAAQ,IAAI,KAAO,IACtC,MAEA,KAAyB,GAAQ,EAAE,EAAI,EACvC,OAEA,+BACA,eAA+B,wBAC/B,eACA,CACA,CAOA,UACA,UAAkB,EAAO,UACzB,CAOA,WACA,UAAkB,EAAO,UACzB,CAOA,WACA,UAAkB,EAAO,UACzB,CAOA,YACA,UAAkB,EAAO,WACzB,CAOA,YACA,UAAkB,EAAO,WACzB,CAOA,cACA,UAAkB,EAAO,aACzB,CACA,gBACA,qCACA,EADyD,EACzD,qBADgF,EAEhF,wBAEA,CACA,iBACA,wBAEA,CACA,iBACA,yBCtKA,UAAmB,EAAa,aCGhC,MAAiC,aAAgB,QAEjD,EACA,OACA,WACA,IAAoB,SAAmB,EACvC,mBACA,aACA,eACgB,EAAM,8CAA+C,EAAU,GAC/E,MACA,CACA,mBAEA,EADA,IAEA,CAAS,CACT,MAfA,aAgBA,EACA,aACA,IACA,gBAEA,OADA,kBACA,CACA,CACA,SAMA,MALgB,EAAa,KAC7B,MAD6B,CAC7B,YACA,wBAEA,gBACA,CACA,CACA,EAAK,GACL,wBACA,QACA,CAAK,CACL,EAEA,QAA4B,sDAAsD,IAKlF,oBAJA,GACA,MACA,UACA,CAAK,EACL,CACA,WACA,UAAoB,GAAQ,EAC5B,0BACgB,EAAM,4CAA6C,EAAM,GACzE,MACA,CAIA,iBACA,KACA,CAAS,CACT,YACA,UAAoB,GAAQ,EAC5B,qBACgB,EAAM,6CAA8C,EAAM,GAC1E,MACA,CAIA,sBACA,KACA,CACA,CAAK,EACL,QACA,ECvEA,MACA,WACA,SACA,uBACA,eACA,cAA8B,KAAQ,KACtC,qBACA,gBACA,IACA,kBACA,OACA,oBACA,GACA,CACA,CAFqB,MAErB,CACA,OACA,8BAEA,aAEA,wBAEA,aAIA,ECxBA,6BACA,0BACA,oBACM,EAAM,IAAO,EAAa,EAApB,IACZ,KADgC,EAChC,EACA,eACA,uBACA,wBACA,OACA,OACA,MACA,YACA,eACA,SACA,UACA,KACA,KACA,CACA,WACA,CAOA,aACA,4BACA,OACY,EAAM,yBAA0B,EAAQ,GACpD,MACA,CACA,yBACA,oBAAgC,EAAU,UAC1C,CACA,CACA,kBACA,oBACA,sCACA,OAEgB,EAAM,iBAAkB,GAAS,sEAGjD,OACA,UACA,SAAuB,KAAY,CACnC,SACA,gBAEA,IACA,oBACA,CACA,SACY,EAAM,SAElB,CACA,uBAEA,wBACA,UAAsB,EAAY,CAClC,KN/DA,CM+DsB,GADY,6BAElC,CADuD,OACvD,6BACA,CAAa,EAMb,4BASA,OARA,IACA,KACA,yBAEA,QACA,OACA,SATA,CAUA,CAAS,EACT,KACA,eAZA,EAaA,CACA,CACA,gBACA,YAAgB,aAAmB,EACnC,wBACA,GACA,cACgB,EAAM,wBAAyB,GAAS,UACxD,IACA,aACA,CACA,SACoB,EAAM,QAC1B,CACA,CAAa,CAEb,CACA,CAIA,2BAOA,sBClHA,UAEA,aADA,mBACA,CACA,WACA,+CACA,IAEA,CACA,uBACA,ECTA,2BCKM,EAAM,IAAO,EAAa,cAApB,KACZ,GACA,iBACA,cACA,qCACA,sBACA,YACA,oBAMA,eACA,EASA,OAAoC,IACpC,iEACA,UAAkB,EAAY,CAC9B,SAD8B,wBAE9B,oCACA,iGACA,CAAS,EAET,uBAAY,mwBAA2vB,EACvwB,KAEA,GACA,cACA,UACA,QACA,QACA,CAAa,CACb,EAGA,mBAAY,UAAuB,MACnC,mCACA,mBACA,UAAoB,YAAgB,aACpC,kBACA,gBACA,UACA,QACA,QACA,CACA,CAAiB,CAEjB,CACA,mBACA,UAAoB,YAAgB,cACpC,iBACA,mBACA,kBACA,UACA,QACA,QACA,CACA,CAAiB,CAEjB,CACA,CAQA,GANA,kBACA,iBACA,8CACA,GAGA,GACA,WACA,GACY,EAAM,qCAAsC,EAA+B,yBAEvF,OACA,SACA,WACA,SACA,SACA,wBACA,CAAa,EAEb,GACA,oCAEA,CAEA,QACA,CACA,UACA,gBACA,oCACA,iCACA,EACA,OACA,IACA,CACA,oCACA,gFACA,gFACA,4EACA,qFACA,EACA,OAKA,EAJA,uBACA,SACA,MACA,GACA,gBACA,KAEA,mBAA+B,YAAgB,CAC/C,CAAK,GAAK,EACV,2BACA,kCACA,QACA,SACA,SACA,iBACA,8BACA,2BACA,iBACA,mBACA,aACA,MACA,iBACA,WACA,iBACA,QACA,OACA,CAAiB,CACJ,CACb,EAEA,mCACA,OACA,WAwBA,GAtBA,WACA,2BACA,4BACA,OACA,QACA,OACA,cACA,CAAiB,CACJ,CACb,EAGA,GACA,YACA,IACA,SACA,SACA,4CACA,CAAa,CACb,EAGA,GACA,4BAAgB,GAA0B,CAC1C,QACA,iBACA,YACA,0CACA,+BACA,gBACa,CAEb,CAmBA,GAjBA,GACA,QACA,SACA,sBACA,SAAwB,iCAAkC,EAC1D,OACA,KACA,KACA,WACA,cAAwC,GAAU,OAClD,aAAuC,GAAS,OAC3B,CAErB,CAAa,GAAI,CACjB,GAGA,GAEA,IAAgB,WAAmB,yCACnC,iBACA,CACA,KACA,SACA,aACA,iBACA,6BACA,kBAAoC,EAAS,CAE7C,CAAiB,EAEjB,CACA,CACA,QACA,EACA,uBACA,WAA0B,4DAA+D,KACzF,SACA,SACA,oBACA,qBACA,eACA,CAAC,CACD,KACA,UACA,sBACA,2CACA,CAAK,ECjCL,GACA,qCACA,iBACA,cACA,oBACA,qBACA,EAIA,GACA,gBACA,2BACA,oBACA,0BACA,EC5MA,KACA,6CACe,EAAe,IDX9B,YAEA,IAAY,WAAU,QACtB,KAGA,iBACA,ECM6B,GAI7B,EDyJA,YACA,OC7JkC,ED6KlC,GAfA,WACA,oBArKA,GACA,MACA,OAEA,gBAAY,0BAAmC,EAC/C,OACA,IACA,SACA,SACA,oBAoNA,GACA,SAUA,OATA,iBAAuB,6BAAmD,IAC1E,UACA,8CAA8D,EAAK,wBAEnE,OACA,aACA,QACA,CACA,CAAK,EACL,CACA,EAhOA,EACA,CAAS,CAET,EAyJA,YAEA,QACA,QA3JA,gBAyMA,EAxMA,MACA,OAEA,iBAAY,kMAAsM,EAClN,GACA,SACA,aACA,kBACA,CAAS,EAmDT,OAjDA,GACA,YACA,aACA,gBACA,GAEA,GACA,2BACA,qCACA,iCACA,qCACA,2CACA,yBACA,GAEA,GACA,gBACA,OA8KA,cADA,EA7KA,GA+KA,WACA,eACA,KACA,MAjLA,8BACA,+BACA,GAEA,GACA,+BAEA,GACA,sBACA,OACA,gBACA,sCACA,wCACA,sDACA,gBACA,mBAqJA,MACA,wBACA,eACA,aAEA,GACK,GACL,EA5JA,qBACA,CACA,GAEA,GACA,sBACA,uBACA,0BACA,iCAEA,+BACA,GAEA,GACA,4CAAkG,UAAkB,cAAkB,IAAK,EAE3I,CACA,EA8FA,SAEA,aACA,sBAhGA,GACA,uBACA,OAEA,oBAAY,GAAkB,EAC9B,OACA,UACA,eACA,oBAEA,CACA,EAqFA,cAEA,OACA,gBAvFA,GACA,MACA,OAEA,eAAY,kDAAyD,EACrE,OACA,iBACA,SACA,gBACA,sBACA,MACA,CAAS,CAET,EA0EA,QAEA,QACA,OA5EA,YACA,MACA,OAEA,eAAY,sEAA6E,EAQzF,OACA,QARA,CACA,WACA,gBA0FA,EA1FA,EA0FA,CAzFA,SACA,SACA,oBACA,CAGA,CACA,EA6DA,SAEA,UACA,eA/DA,GACA,cACA,OAEA,QAAY,uDAAuD,SAOnE,OACA,OAPA,CACA,WACA,gBA0EA,EA1EA,EA0EA,CAzEA,SACA,QACA,CAGA,CACA,EAiDA,UACA,iBACA,QAAoC,eAEpC,CAIA,OAHA,iBACA,iBAtDA,YACA,MACA,OAEA,eAAY,uCAA+C,EAC3D,iCACA,wCACA,WACA,OAGA,SAiBA,OAhBA,GACA,mBACA,UACA,QACA,QACA,CAAa,CACb,EAEA,GACA,qBACA,UACA,QACA,QACA,CAAa,CACb,EAEA,CACA,EAyBA,kBAEA,CACA,ECvLkC,ECZlC,SAWA,eACA,kBACA,kBACA,CAUA,2BAAuC,MACvC,EACA,EAEA,8BAqBA,OApBA,GACA,8BAEA,EACA,0EACA,2BACA,SACA,iBACA,4BACiB,GAIjB,EACA,0EACA,2BACA,iBACA,4BACiB,EAEjB,CACA,SACA,2BACA,yBACA,SACA,CACA,CACA,yBACA,4EACA,CACA,mBACA,kEACA,CACA,KlBhEA,EOAA,EsBAA,EAsBA,EAeA,EAYA,EAKA,EAUA,EA2BA,EAKA,EAWA,EAMA,EAIA,EAMA,EAIA,EAKA,E6BpIA,avCSO,mBACP,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,EAIO,GACP,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,CCrFA,cACA,aACA,2BAAqC,GACrC,CADyC,GACzC,yBACA,+BACA,oBACA,mBAIA,gBACA,CAsGA,OArGA,+BACA,iBACA,6DAEA,QACA,eAEA,GADA,oBACA,IAAmC,EAAnC,aDsEO,ICtE+C,aACtD,mDAEA,UACA,wCACA,IDzBO,KC0BP,oBACA,EADsC,EACtC,QADgD,GAChD,GACA,oBAGA,EACA,8BACA,mBACA,yBACA,iFACA,oBAGA,GAFA,oCAEA,EDvCO,ICuC2C,GAAU,CAC5D,MAD4D,EAC5D,EADoC,IACpC,MAD8C,OAC9C,CAAgD,EDxCzC,ECwC6C,CAAY,IAChE,KAD8D,KAC9D,MAEA,kBACA,mBACA,CACA,4BAA4C,EAAI,GAAgB,IAChE,GAD0D,OAC1D,MAEA,YAAiC,GAAU,8BAC3C,YAAiC,GAAU,GAC3C,IAD2C,CAC3C,aACA,gBACA,CAIA,QADA,iBDpDO,ICqDP,IAAwB,IAAO,CADe,GAE9C,8BACA,gCACA,+BACA,+BAEA,QACA,EACA,kCAGA,QAFA,2BACA,wDACA,IAAwB,EDpEjB,ECoEqB,CAAY,KACxC,IADsC,CACtC,GACA,aACA,iBACA,mBACA,kBACA,iBAEA,CACA,qBACA,uCAEA,IADA,qBACA,6BACA,cACA,0CACA,CACA,sBACA,eACA,eACA,WACA,GACA,IAA6B,CAAG,uBAChC,EACA,iBACA,eACA,gBACA,cACA,EACA,IACA,IACA,IACA,QACA,IACA,IACA,IACA,OACA,CACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,EACA,CACA,CAAC,GCtHM,yDCIH,GAAQ,KAAgB,IAAN,IAA0B,EAApB,CAA0B,KAA1C,SACZ,GAAyB,OAAO,GAAM,gBAChC,GACC,KADc,IACd,aAEP,wBACA,EACA,mBACe,GAAQ,GAEvB,sBACA,gFAEA,iBACA,CGdA,kBACA,cACA,cACA,cAAwB,GACxB,MADiC,IACjC,EACA,CA0DA,OAzDA,+BACA,GAAY,CFRZ,UEQuB,SFPvB,aAEA,gBADA,IEMuB,WAGvB,IACA,iBAA6B,GAAe,GAC5C,CACA,QAF4C,CAG5C,YACA,CACA,EAIA,kCACA,cACA,wBAEA,YACA,qBACA,sCAEA,qBAEA,kBACA,EAMA,8BACA,MAAe,QAAS,+BACxB,MAAmB,QAAW,kBAC9B,4BACa,CACb,CAAS,CACT,EACA,6BAEA,GADA,cAAwB,GACxB,MADiC,KACjC,EACA,eAA6B,GAC7B,MADsC,SAmBtC,GACA,MAAgB,GAAe,GAC/B,SAD+B,MAC/B,CNrEO,EMqEoB,CAAU,CACrC,QADqC,EACR,GAC7B,MADsC,EACtC,IACA,YACA,CACA,qBAAgC,IAEhC,MAF0C,CAC1C,SACA,CACA,EA5BA,aACA,iBNlDO,IMmDP,MADiD,GAEjD,YAA4B,ENpDrB,EMoDyB,CAAY,IAC5C,KAD0C,CAC1C,GACA,SAEA,oBACA,qBAEA,YAA4B,eAAsB,IAClD,MAEA,CACA,EACA,CACA,CAAC,GEpED,UACA,MACA,YAAgB,MAAS,KACzB,kCACA,eACA,OAA0B,GAAY,EAEtC,QACA,OACA,CCaA,SACA,cACA,0BACA,wBACA,uBACA,cAAwB,CACxB,CAcA,OAfiC,GAejC,KACA,MAAuC,EAAkB,EACzD,cADyD,OACzD,GACA,GACA,wBAGA,qBAA+B,EAAU,sBACzC,wEACQ,EAAG,iBACX,kBACA,0BACS,aAAe,GACxB,WADsC,aACtC,EACA,CAMA,YACA,2BACA,CAEA,CAAK,EAAkB,IACvB,YADuB,QACvB,gCAEA,sCAIA,oBAEA,CACA,sBACA,qDACA,qBAGA,uDAEA,0BACA,CACA,CAOA,eCzFA,YAEA,iBACA,YACA,aACA,cACA,YACA,WACA,aAEA,0BACA,iBACA,kBACA,mBACA,iBACA,gBACA,kBAEA,oBACA,YACA,CAAC,UAA8B,EAE/B,YACA,UACA,YACA,cACA,wBACA,wBACA,YACA,kCACA,8BACA,4BACA,kBACA,sCACA,mBACA,CAAC,UAA4B,EAE7B,YACA,yBACA,sBACA,wBACA,yBACA,kBACA,mBACA,gBACA,iBACA,wBACA,CAAC,UAA4B,EAE7B,YACA,aACA,kBACA,CAAC,UAA0C,EAE3C,YACA,cACA,UACA,WACA,UACA,YACA,UACA,UACA,CAAC,UAA8B,EAE/B,YACA,aACA,oBACA,uBACA,aACA,yBACA,0BACA,iBACA,uBACA,qBACA,4BACA,kBACA,4BACA,2BACA,4BACA,eACA,sBACA,qBACA,4BACA,uBACA,sBACA,oBACA,oBACA,yCACA,yBACA,CAAC,UAAgC,EAEjC,YACA,gBACA,aACA,CAAC,UAA0C,EAE3C,YACA,mBACA,0BACA,2BACA,sBACA,oBACA,kBACA,oBACA,qBACA,CAAC,UAA8B,EAE/B,YACA,mBACA,mBACA,8BACA,CAAC,UAAoD,EAGrD,CACC,SAAgD,EADjD,SAGA,YACA,cACA,eACA,eACA,CAAC,UAA8C,EAG/C,CACC,SAAoC,EADrC,cAGA,YACA,kCACA,kBACA,CAAC,UAAwD,EAEzD,YACA,iBACA,mBACA,WACA,WACA,aACA,oBACA,YACA,CAAC,SAAsC,GC7IhC,IAAM,GAAI,oDCAV,GACP,cACA,YACA,CACA,cA8IoB,EAMI,EAnJxB,GA8IA,CA9IY,SA8IZ,OADoB,EA7IG,GA+IvB,aAEA,iBAhJA,OAEA,iBACA,6DAEA,MA8IA,KA9IqB,KA8IrB,OADwB,EA7IY,GA+IrB,GAAQ,GA/Ia,EA+Ib,UAEvB,UACA,gFAEA,kBAnJA,IACA,YAAc,GAAa,EAE3B,IADA,oBACA,KACA,iDACA,IDnBuB,KCoBvB,oBACA,EADsC,EACtC,cACA,oBAGA,CACA,eACA,mBACA,WAAoB,gCAAuD,KAC3E,MAEA,GADA,oCACA,ED/BuB,IC+B2B,GAAU,CAC5D,gBAD4D,WAC5D,CAAgD,EDhCzB,ECgC6B,CAAY,IAChE,eAD8D,CAG9D,kBACA,mBACA,CACA,4BAA4C,EAAI,GAAgB,IAChE,aAD0D,GAG1D,YAA6B,GAAU,UACvC,OADuC,IACvC,CAA6B,GAAU,8BACvC,kBACA,gBACA,CACA,mCD7C0B,KC8C1B,YAAwB,IAAO,EAD+B,EAE9D,kCAEA,yDACA,CACA,aACA,WAAgB,WAAgB,KAChC,4BACA,6CACA,8CACA,8CACA,+CACA,8CACA,+CACA,+CACA,+CACA,8CACA,+CACA,+CACA,+CACA,8CACA,+CACA,+CACA,+CACA,6CACA,8CACA,+CACA,8CACA,8CACA,6CACA,+CACA,+CACA,8CACA,8CACA,+CACA,+CACA,8CACA,6CACA,+CACA,+CACA,8CACA,+CACA,+CACA,+CACA,6CACA,+CACA,+CACA,+CACA,8CACA,8CACA,+CACA,8CACA,8CACA,+CACA,+CACA,8CACA,6CACA,+CACA,+CACA,+CACA,8CACA,+CACA,+CACA,8CACA,8CACA,+CACA,+CACA,+CACA,8CACA,+CACA,8CACA,+CACA,uBACA,uBACA,uBACA,sBACA,CACA,QACA,4BAAsC,IACtC,UAD0C,CAC1C,8BAAmD,KACnD,eAD6D,EAC7D,GACA,mBACA,gBACA,CACA,CACA,yBAEA,QADA,iDACA,wBACA,CACA,2BACA,6BACA,CACA,2BACA,6BACA,CACA,2BACA,0BACA,CACA,2BACA,6BACA,CCjJA,eAEA,YADA,kDAEA,UCKA,iBACA,UAAuB,GAAG,EAC1B,gCAGA,OAFA,YDPA,QCSmB,CDTnB,SACA,mBACA,gCAEA,sDACA,ECGA,iBAEA,EACA,0BACA,oBACA,eACA,WACA,EACA,eACA,wBACA,EACA,eACA,UACA,EACA,sBACA,CAAC,ECxBD,KAAyB,iCAAgC,GACzD,eACQ,EAAqB,IAAqB,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,4BACA,iBACA,qBACA,uBACA,wBACA,sBACA,CASA,0BCCA,IACA,yBACA,wBACA,yBACA,0BACA,yCACA,uBACA,mBACA,4BACA,WACA,qBACA,aACA,sBACA,2BACA,CACA,IACA,eACA,iBACA,0BACA,CACA,mBACA,oBACA,OACI,EAAgB,aAEpB,CAFoB,aAGpB,mBACA,8CACA,oBI1CA,IACA,UAGA,SADA,IADA,YACA,+BAEA,oBACA,YACK,EAEL,OACA,SACA,OACA,kDACA,EAEA,+BACA,2BAEA,UAGA,SACA,iCAEA,SAEA,0BACA,gBACA,4BAIA,uBACA,yBACA,YACA,cACA,SAEA,sBACA,SACA,OAEA,oBACA,aAGA,cAKA,qCACA,CACA,EACA,qCACA,sCACA,aACA,uBACA,wCACA,OACA,0BACA,mBACA,SAGA,QACA,EACA,mDClEA,iBACA,wBACA,OAEA,eAAY,GAAa,EACzB,cACA,UACA,OACA,QACA,WACA,aAGA,qBADA,MADA,2BAEA,CACA,OACA,UAAmB,GAAa,EAChC,CAAK,CACL,EACA,IAHgC,KAGhC,IACA,WAEA,mCAEA,0BACA,eACA,IACA,OAAmB,GAAM,QACzB,CACA,SACA,6CAA6D,EAAM,EACnE,CAEA,QACA,oBC/BA,4BAA4C,KAAK,WACjD,YAAoC,EAAE,KACtC,UA+CA,kBACA,aACA,YAIA,IACA,QAlDA,KAmDA,iBA/CA,YAEA,EADA,WAAY,6DAAgE,EAG5E,KACA,MAAuB,GAAU,QAEjC,MACA,KACA,gFAEA,MAAuB,GAAU,yBAA0B,GAAY,GAAS,EAChF,IADuE,EAGvE,MAAuB,GAAU,cAAe,EAAO,GAAG,GAAY,GAAS,GAG/E,GAHsE,GAGtE,QACA,iBACA,qCAAqD,SAAgB,IAErE,2BACA,eAAoC,SAAgB,EAGpD,UAA+B,SAAgB,GAAG,OAAc,EAGhE,OAAa,MACb,EAmBA,cAAkB,KN3DlB,OACA,GM0DiC,CN1DjC,KACA,aACA,MMwD+C,CNvD/C,mBACA,gBACA,cACA,SACQ,GAAgB,IACxB,OACA,EAFwB,aGTH,CG6DH,GH3DlB,MAD0B,CDD1B,WDNA,GEO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,wBAEA,yBACA,gDAEA,4BACA,8BAEA,uBACA,oBACA,mBACA,CAEA,UAAkB,EAAY,CAC9B,KAAkB,EAA0B,EADd,iBACc,CAC5C,GAAe,CAD6B,CACV,EAA0B,qBACnD,CAET,EACA,sBACA,QACA,IACA,kBACA,YACA,MACA,aACA,kBACA,MACA,EACA,KAEA,EADA,MACA,CAEA,OACA,aACA,oBACA,UACA,CACA,ECLA,eACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,EACA,EAIA,SACA,YACA,IAAgB,kBAAmC,EACnD,QAAwC,GAAwB,GAAO,GACvE,CADuE,CACvE,YAD+D,QAE/D,KACA,aACA,WAEA,cAAgB,eAAuB,GAA+B,EADtE,cAEA,UADsE,UACtD,sFAAuG,MAGvH,GAFA,IAEA,UAA2C,CAC3C,SACA,EAF0B,UAI1B,EADA,KAH2C,SAG3C,EACA,EACA,OACA,CACA,OACA,aAAoB,iBAAwB,MAAQ,GAA2B,CAC/E,WACA,cACA,SACA,YACA,MACA,cACA,qBACA,kBACA,WACA,OACA,OACA,qBACa,EACb,GACA,WACA,gBACA,CACA,CACA,IACc,GAAkB,CAChC,cADgC,IAChC,cACA,cACA,2BACA,SACA,OACA,KACA,CAAa,EACb,OACA,MAA4B,GAAc,KAC1C,MAD0C,IAC1C,kCAAsF,EAAY,OAClG,UACA,wBACA,aACA,MACA,CAAa,CACb,EACA,EAAiD,GAAmC,CACpF,OACA,YACA,CAAS,EACT,KACA,YAA4B,EpH5G5B,EoH4GwD,IAApB,EACpC,KAA+C,GAAkB,CACjE,OAFsD,OACW,OACjE,EACA,yBACA,WACA,qBACA,SACA,WACA,oBACA,yBACA,qCACA,0CACa,EAEb,sBACA,IAAgB,QAAa,MAAQ,GAAuB,CAC5D,KACA,cAF4D,MAE5D,CACA,eAA4B,GAAyB,EAAa,YACzD,EACT,KAFoD,EAEpD,EACA,MACA,oBACA,iBACA,6DACA,CAAa,CACJ,EACT,MACA,IAAoB,iBAAoC,MAAQ,GAAU,GAC1E,IAD0E,GAC1E,EACA,KACA,CAAa,EACb,YACA,UAA0B,EAAY,CACtC,SADsC,IAEtC,+CAAoE,EAAK,YAAY,EAAmB,GACvF,CAEjB,CACA,GACA,MAAkB,GAAkB,GAEpC,OACA,KAHoC,EAIpC,cACA,UACA,EACA,gBACA,CAAgB,GADa,CACb,QAChB,CAAgB,OAF8B,GAE9B,EAChB,EACA,UACA,QACA,UACA,eACA,eACY,EAAM,wBAIlB,IAEA,CAAK,EAoCL,OACA,mBApCA,wBACA,IACA,IACA,GACA,CAAK,EAiCL,QAhCA,KACA,KACA,UACA,EA8BA,SA7BA,KACA,GACA,EA4BA,SA3BA,IAEA,YAaA,CAZA,UAEA,GACA,MAAsB,GAAkB,GAGxC,MAAkB,GAAoB,GAHE,OAIxC,EACA,KAFsC,CAGtC,oBACA,CAAa,CACb,KACA,UACY,EAAM,6CAClB,CAAS,EACT,EAGA,IAAY,EAAa,WAAa,GAAU,QAChD,CAMA,CACA,EACA,SACI,GAAO,gDACP,EClNJ,eACA,GDiNwB,MCjNZ,GAAO,EACnB,EAA2B,EAAU,GAErC,GADI,EADiC,KACZ,UrHVzB,IqHUyB,UAAoE,CAAjB,CAA2C,cAA5B,EAA4B,EACvH,MADuH,GACvH,MrHZA,QqHY2E,CAE3E,MAF0D,IAE1D,aAF2E,GAG3E,OAAe,EAAgB,CAC/B,aAD+B,KAC/B,GACA,IAAiB,GAAY,cAC7B,aACA,UACA,CACA,CAAS,CACT,CACA,CAEA,uBAAgB,mCAAoD,GAA0B,KAC9F,OAAe,EAAgB,CAC/B,QAF8F,KAC/D,KAC/B,GACA,MACA,aACA,IACA,CAAa,CACb,UACA,UACA,CAAS,CACT,CACA","sources":["webpack://_N_E/./node_modules/underscore/modules/_setup.js","webpack://_N_E/./node_modules/underscore/modules/restArguments.js","webpack://_N_E/./node_modules/underscore/modules/isObject.js","webpack://_N_E/./node_modules/underscore/modules/isNull.js","webpack://_N_E/./node_modules/underscore/modules/isUndefined.js","webpack://_N_E/./node_modules/underscore/modules/isBoolean.js","webpack://_N_E/./node_modules/underscore/modules/isElement.js","webpack://_N_E/./node_modules/underscore/modules/_tagTester.js","webpack://_N_E/./node_modules/underscore/modules/isString.js","webpack://_N_E/./node_modules/underscore/modules/isNumber.js","webpack://_N_E/./node_modules/underscore/modules/isDate.js","webpack://_N_E/./node_modules/underscore/modules/isRegExp.js","webpack://_N_E/./node_modules/underscore/modules/isError.js","webpack://_N_E/./node_modules/underscore/modules/isSymbol.js","webpack://_N_E/./node_modules/underscore/modules/isArrayBuffer.js","webpack://_N_E/./node_modules/underscore/modules/isFunction.js","webpack://_N_E/./node_modules/underscore/modules/_hasObjectTag.js","webpack://_N_E/./node_modules/underscore/modules/_stringTagBug.js","webpack://_N_E/./node_modules/underscore/modules/isDataView.js","webpack://_N_E/./node_modules/underscore/modules/isArray.js","webpack://_N_E/./node_modules/underscore/modules/_has.js","webpack://_N_E/./node_modules/underscore/modules/isArguments.js","webpack://_N_E/./node_modules/underscore/modules/isFinite.js","webpack://_N_E/./node_modules/underscore/modules/isNaN.js","webpack://_N_E/./node_modules/underscore/modules/constant.js","webpack://_N_E/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://_N_E/./node_modules/underscore/modules/_shallowProperty.js","webpack://_N_E/./node_modules/underscore/modules/_getByteLength.js","webpack://_N_E/./node_modules/underscore/modules/_isBufferLike.js","webpack://_N_E/./node_modules/underscore/modules/isTypedArray.js","webpack://_N_E/./node_modules/underscore/modules/_getLength.js","webpack://_N_E/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://_N_E/./node_modules/underscore/modules/keys.js","webpack://_N_E/./node_modules/underscore/modules/isEmpty.js","webpack://_N_E/./node_modules/underscore/modules/isMatch.js","webpack://_N_E/./node_modules/underscore/modules/underscore.js","webpack://_N_E/./node_modules/underscore/modules/_toBufferView.js","webpack://_N_E/./node_modules/underscore/modules/isEqual.js","webpack://_N_E/./node_modules/underscore/modules/allKeys.js","webpack://_N_E/./node_modules/underscore/modules/_methodFingerprint.js","webpack://_N_E/./node_modules/underscore/modules/isMap.js","webpack://_N_E/./node_modules/underscore/modules/isWeakMap.js","webpack://_N_E/./node_modules/underscore/modules/isSet.js","webpack://_N_E/./node_modules/underscore/modules/isWeakSet.js","webpack://_N_E/./node_modules/underscore/modules/values.js","webpack://_N_E/./node_modules/underscore/modules/pairs.js","webpack://_N_E/./node_modules/underscore/modules/invert.js","webpack://_N_E/./node_modules/underscore/modules/functions.js","webpack://_N_E/./node_modules/underscore/modules/_createAssigner.js","webpack://_N_E/./node_modules/underscore/modules/extend.js","webpack://_N_E/./node_modules/underscore/modules/extendOwn.js","webpack://_N_E/./node_modules/underscore/modules/defaults.js","webpack://_N_E/./node_modules/underscore/modules/_baseCreate.js","webpack://_N_E/./node_modules/underscore/modules/create.js","webpack://_N_E/./node_modules/underscore/modules/clone.js","webpack://_N_E/./node_modules/underscore/modules/tap.js","webpack://_N_E/./node_modules/underscore/modules/toPath.js","webpack://_N_E/./node_modules/underscore/modules/_toPath.js","webpack://_N_E/./node_modules/underscore/modules/_deepGet.js","webpack://_N_E/./node_modules/underscore/modules/get.js","webpack://_N_E/./node_modules/underscore/modules/has.js","webpack://_N_E/./node_modules/underscore/modules/identity.js","webpack://_N_E/./node_modules/underscore/modules/matcher.js","webpack://_N_E/./node_modules/underscore/modules/property.js","webpack://_N_E/./node_modules/underscore/modules/_optimizeCb.js","webpack://_N_E/./node_modules/underscore/modules/_baseIteratee.js","webpack://_N_E/./node_modules/underscore/modules/iteratee.js","webpack://_N_E/./node_modules/underscore/modules/_cb.js","webpack://_N_E/./node_modules/underscore/modules/mapObject.js","webpack://_N_E/./node_modules/underscore/modules/noop.js","webpack://_N_E/./node_modules/underscore/modules/propertyOf.js","webpack://_N_E/./node_modules/underscore/modules/times.js","webpack://_N_E/./node_modules/underscore/modules/random.js","webpack://_N_E/./node_modules/underscore/modules/now.js","webpack://_N_E/./node_modules/underscore/modules/_createEscaper.js","webpack://_N_E/./node_modules/underscore/modules/_escapeMap.js","webpack://_N_E/./node_modules/underscore/modules/escape.js","webpack://_N_E/./node_modules/underscore/modules/_unescapeMap.js","webpack://_N_E/./node_modules/underscore/modules/unescape.js","webpack://_N_E/./node_modules/underscore/modules/templateSettings.js","webpack://_N_E/./node_modules/underscore/modules/template.js","webpack://_N_E/./node_modules/underscore/modules/result.js","webpack://_N_E/./node_modules/underscore/modules/uniqueId.js","webpack://_N_E/./node_modules/underscore/modules/chain.js","webpack://_N_E/./node_modules/underscore/modules/_executeBound.js","webpack://_N_E/./node_modules/underscore/modules/partial.js","webpack://_N_E/./node_modules/underscore/modules/bind.js","webpack://_N_E/./node_modules/underscore/modules/_isArrayLike.js","webpack://_N_E/./node_modules/underscore/modules/_flatten.js","webpack://_N_E/./node_modules/underscore/modules/bindAll.js","webpack://_N_E/./node_modules/underscore/modules/memoize.js","webpack://_N_E/./node_modules/underscore/modules/delay.js","webpack://_N_E/./node_modules/underscore/modules/defer.js","webpack://_N_E/./node_modules/underscore/modules/throttle.js","webpack://_N_E/./node_modules/underscore/modules/debounce.js","webpack://_N_E/./node_modules/underscore/modules/wrap.js","webpack://_N_E/./node_modules/underscore/modules/negate.js","webpack://_N_E/./node_modules/underscore/modules/compose.js","webpack://_N_E/./node_modules/underscore/modules/after.js","webpack://_N_E/./node_modules/underscore/modules/before.js","webpack://_N_E/./node_modules/underscore/modules/once.js","webpack://_N_E/./node_modules/underscore/modules/findKey.js","webpack://_N_E/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://_N_E/./node_modules/underscore/modules/findIndex.js","webpack://_N_E/./node_modules/underscore/modules/findLastIndex.js","webpack://_N_E/./node_modules/underscore/modules/sortedIndex.js","webpack://_N_E/./node_modules/underscore/modules/_createIndexFinder.js","webpack://_N_E/./node_modules/underscore/modules/indexOf.js","webpack://_N_E/./node_modules/underscore/modules/lastIndexOf.js","webpack://_N_E/./node_modules/underscore/modules/find.js","webpack://_N_E/./node_modules/underscore/modules/findWhere.js","webpack://_N_E/./node_modules/underscore/modules/each.js","webpack://_N_E/./node_modules/underscore/modules/map.js","webpack://_N_E/./node_modules/underscore/modules/_createReduce.js","webpack://_N_E/./node_modules/underscore/modules/reduce.js","webpack://_N_E/./node_modules/underscore/modules/reduceRight.js","webpack://_N_E/./node_modules/underscore/modules/filter.js","webpack://_N_E/./node_modules/underscore/modules/reject.js","webpack://_N_E/./node_modules/underscore/modules/every.js","webpack://_N_E/./node_modules/underscore/modules/some.js","webpack://_N_E/./node_modules/underscore/modules/contains.js","webpack://_N_E/./node_modules/underscore/modules/invoke.js","webpack://_N_E/./node_modules/underscore/modules/pluck.js","webpack://_N_E/./node_modules/underscore/modules/where.js","webpack://_N_E/./node_modules/underscore/modules/max.js","webpack://_N_E/./node_modules/underscore/modules/min.js","webpack://_N_E/./node_modules/underscore/modules/toArray.js","webpack://_N_E/./node_modules/underscore/modules/sample.js","webpack://_N_E/./node_modules/underscore/modules/shuffle.js","webpack://_N_E/./node_modules/underscore/modules/sortBy.js","webpack://_N_E/./node_modules/underscore/modules/_group.js","webpack://_N_E/./node_modules/underscore/modules/groupBy.js","webpack://_N_E/./node_modules/underscore/modules/indexBy.js","webpack://_N_E/./node_modules/underscore/modules/countBy.js","webpack://_N_E/./node_modules/underscore/modules/partition.js","webpack://_N_E/./node_modules/underscore/modules/size.js","webpack://_N_E/./node_modules/underscore/modules/_keyInObj.js","webpack://_N_E/./node_modules/underscore/modules/pick.js","webpack://_N_E/./node_modules/underscore/modules/omit.js","webpack://_N_E/./node_modules/underscore/modules/initial.js","webpack://_N_E/./node_modules/underscore/modules/first.js","webpack://_N_E/./node_modules/underscore/modules/rest.js","webpack://_N_E/./node_modules/underscore/modules/last.js","webpack://_N_E/./node_modules/underscore/modules/compact.js","webpack://_N_E/./node_modules/underscore/modules/flatten.js","webpack://_N_E/./node_modules/underscore/modules/difference.js","webpack://_N_E/./node_modules/underscore/modules/without.js","webpack://_N_E/./node_modules/underscore/modules/uniq.js","webpack://_N_E/./node_modules/underscore/modules/union.js","webpack://_N_E/./node_modules/underscore/modules/intersection.js","webpack://_N_E/./node_modules/underscore/modules/unzip.js","webpack://_N_E/./node_modules/underscore/modules/zip.js","webpack://_N_E/./node_modules/underscore/modules/object.js","webpack://_N_E/./node_modules/underscore/modules/range.js","webpack://_N_E/./node_modules/underscore/modules/chunk.js","webpack://_N_E/./node_modules/underscore/modules/_chainResult.js","webpack://_N_E/./node_modules/underscore/modules/mixin.js","webpack://_N_E/./node_modules/underscore/modules/underscore-array-methods.js","webpack://_N_E/./node_modules/underscore/modules/index.js","webpack://_N_E/./node_modules/underscore/modules/index-default.js","webpack://_N_E/./node_modules/underscore/modules/index-all.js","webpack://_N_E/./node_modules/tslib/tslib.es6.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/errors/types/validation.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/errors/AmplifyError.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/errors/StorageError.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/errors/utils/assertValidationError.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/constants.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/errors/CanceledError.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/constants.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Logger/types.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Logger/ConsoleLogger.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/utils/logger.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/transferTask.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/byteLength.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Hub/index.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/utils/deepFreeze.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/singleton/constants.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/parseAWSExports.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/parseAmplifyOutputs.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/utils/parseAmplifyConfig.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/singleton/Auth/index.mjs","webpack://_N_E/./node_modules/@aws-crypto/sha256-js/build/module/constants.js","webpack://_N_E/./node_modules/@aws-crypto/sha256-js/build/module/RawSha256.js","webpack://_N_E/./node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","webpack://_N_E/./node_modules/@aws-crypto/util/build/module/convertToBuffer.js","webpack://_N_E/./node_modules/@aws-crypto/util/build/module/isEmptyData.js","webpack://_N_E/./node_modules/@aws-crypto/util/build/module/index.js","webpack://_N_E/./node_modules/@aws-crypto/sha256-js/build/module/jsSha256.js","webpack://_N_E/./node_modules/@aws-crypto/sha256-js/build/module/index.js","webpack://_N_E/./node_modules/@smithy/util-hex-encoding/dist-es/index.js","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/singleton/Amplify.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/types.mjs","webpack://_N_E/./node_modules/@smithy/md5-js/dist-es/constants.js","webpack://_N_E/./node_modules/@smithy/md5-js/dist-es/index.js","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/runtime/base64/index.browser.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/md5.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/utils/resolvePrefix.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/resolveS3ConfigAndInput.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/isInputWithPath.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/validateStorageOperationInput.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/serde/responseInfo.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/utils/amplifyUrl/index.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/internal/composeServiceApi.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/version.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/helpers.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/React.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Vue.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Svelte.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Next.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Nuxt.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Angular.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/ReactNative.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Expo.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/Web.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detection/index.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/detectFramework.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/customUserAgent.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/Platform/index.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/endpoints/partitions.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/endpoints/getDnsSuffix.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/types/errors.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/retry/isClockSkewError.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/retry/defaultRetryDecider.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/utils/retry/constants.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/utils/retry/jitteredBackoff.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/retry/jitteredBackoff.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/runtime/xmlParser/dom.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/utils/parsePayload.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/base.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/userAgent/middleware.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/retry/middleware.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/constants.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/signer/signatureV4/signRequest.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/utils/getSkewCorrectedDate.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/utils/isClockSkewed.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/utils/getUpdatedSystemClockOffset.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/middleware.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/internal/composeTransferHandler.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/runtime/constants.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/runtime/contentSha256middleware.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/utils/memoization.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/runtime/xhrTransferHandler.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/runtime/s3TransferHandler/xhr.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/utils/deserializeHelpers.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/clients/middleware/signing/utils/extendedEncodeURIComponent.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/utils/serializeHelpers.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/putObject.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/userAgent.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/constructContentDisposition.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/putObjectJob.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/completeMultipartUpload.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/abortMultipartUpload.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/headObject.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/uploadPart.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/uploadPartExecutor.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/errors/PlatformNotSupportedError.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/storage/KeyValueStorage.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/storage/InMemoryStorage.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/storage/utils.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/storage/DefaultStorage.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/storage/SessionStorage.mjs","webpack://_N_E/./node_modules/@aws-amplify/core/dist/esm/storage/index.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/listParts.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/uploadCache.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/progressTracker.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/utils/client/createMultipartUpload.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/initialUpload.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/calculatePartSize.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/getDataChunker.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/multipart/uploadHandlers.mjs","webpack://_N_E/./node_modules/@aws-amplify/storage/dist/esm/providers/s3/apis/uploadData/index.mjs"],"sourcesContent":["// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Named Exports\n// =============\n\n// Underscore.js 1.13.7\n// https://underscorejs.org\n// (c) 2009-2024 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\nexport { VERSION } from './_setup.js';\nexport { default as restArguments } from './restArguments.js';\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\nexport { default as isObject } from './isObject.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isString } from './isString.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isError } from './isError.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isDataView } from './isDataView.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isWeakSet } from './isWeakSet.js';\n\n// Functions that treat an object as a dictionary of key-value pairs.\nexport { default as keys } from './keys.js';\nexport { default as allKeys } from './allKeys.js';\nexport { default as values } from './values.js';\nexport { default as pairs } from './pairs.js';\nexport { default as invert } from './invert.js';\nexport { default as functions,\n default as methods } from './functions.js';\nexport { default as extend } from './extend.js';\nexport { default as extendOwn,\n default as assign } from './extendOwn.js';\nexport { default as defaults } from './defaults.js';\nexport { default as create } from './create.js';\nexport { default as clone } from './clone.js';\nexport { default as tap } from './tap.js';\nexport { default as get } from './get.js';\nexport { default as has } from './has.js';\nexport { default as mapObject } from './mapObject.js';\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\nexport { default as identity } from './identity.js';\nexport { default as constant } from './constant.js';\nexport { default as noop } from './noop.js';\nexport { default as toPath } from './toPath.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as matcher,\n default as matches } from './matcher.js';\nexport { default as times } from './times.js';\nexport { default as random } from './random.js';\nexport { default as now } from './now.js';\nexport { default as escape } from './escape.js';\nexport { default as unescape } from './unescape.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as template } from './template.js';\nexport { default as result } from './result.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as chain } from './chain.js';\nexport { default as iteratee } from './iteratee.js';\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\nexport { default as partial } from './partial.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as memoize } from './memoize.js';\nexport { default as delay } from './delay.js';\nexport { default as defer } from './defer.js';\nexport { default as throttle } from './throttle.js';\nexport { default as debounce } from './debounce.js';\nexport { default as wrap } from './wrap.js';\nexport { default as negate } from './negate.js';\nexport { default as compose } from './compose.js';\nexport { default as after } from './after.js';\nexport { default as before } from './before.js';\nexport { default as once } from './once.js';\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\nexport { default as findKey } from './findKey.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as find,\n default as detect } from './find.js';\nexport { default as findWhere } from './findWhere.js';\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\nexport { default as each,\n default as forEach } from './each.js';\nexport { default as map,\n default as collect } from './map.js';\nexport { default as reduce,\n default as foldl,\n default as inject } from './reduce.js';\nexport { default as reduceRight,\n default as foldr } from './reduceRight.js';\nexport { default as filter,\n default as select } from './filter.js';\nexport { default as reject } from './reject.js';\nexport { default as every,\n default as all } from './every.js';\nexport { default as some,\n default as any } from './some.js';\nexport { default as contains,\n default as includes,\n default as include } from './contains.js';\nexport { default as invoke } from './invoke.js';\nexport { default as pluck } from './pluck.js';\nexport { default as where } from './where.js';\nexport { default as max } from './max.js';\nexport { default as min } from './min.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as sample } from './sample.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as indexBy } from './indexBy.js';\nexport { default as countBy } from './countBy.js';\nexport { default as partition } from './partition.js';\nexport { default as toArray } from './toArray.js';\nexport { default as size } from './size.js';\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\nexport { default as pick } from './pick.js';\nexport { default as omit } from './omit.js';\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\nexport { default as first,\n default as head,\n default as take } from './first.js';\nexport { default as initial } from './initial.js';\nexport { default as last } from './last.js';\nexport { default as rest,\n default as tail,\n default as drop } from './rest.js';\nexport { default as compact } from './compact.js';\nexport { default as flatten } from './flatten.js';\nexport { default as without } from './without.js';\nexport { default as uniq,\n default as unique } from './uniq.js';\nexport { default as union } from './union.js';\nexport { default as intersection } from './intersection.js';\nexport { default as difference } from './difference.js';\nexport { default as unzip,\n default as transpose } from './unzip.js';\nexport { default as zip } from './zip.js';\nexport { default as object } from './object.js';\nexport { default as range } from './range.js';\nexport { default as chunk } from './chunk.js';\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\nexport { default as mixin } from './mixin.js';\nexport { default } from './underscore-array-methods.js';\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\nexport { default } from './index-default.js';\nexport * from './index.js';\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\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}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\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; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar StorageValidationErrorCode;\n(function (StorageValidationErrorCode) {\n StorageValidationErrorCode[\"NoCredentials\"] = \"NoCredentials\";\n StorageValidationErrorCode[\"NoIdentityId\"] = \"NoIdentityId\";\n StorageValidationErrorCode[\"NoKey\"] = \"NoKey\";\n StorageValidationErrorCode[\"NoSourceKey\"] = \"NoSourceKey\";\n StorageValidationErrorCode[\"NoDestinationKey\"] = \"NoDestinationKey\";\n StorageValidationErrorCode[\"NoSourcePath\"] = \"NoSourcePath\";\n StorageValidationErrorCode[\"NoDestinationPath\"] = \"NoDestinationPath\";\n StorageValidationErrorCode[\"NoBucket\"] = \"NoBucket\";\n StorageValidationErrorCode[\"NoRegion\"] = \"NoRegion\";\n StorageValidationErrorCode[\"InvalidStorageBucket\"] = \"InvalidStorageBucket\";\n StorageValidationErrorCode[\"InvalidCopyOperationStorageBucket\"] = \"InvalidCopyOperationStorageBucket\";\n StorageValidationErrorCode[\"InvalidStorageOperationPrefixInput\"] = \"InvalidStorageOperationPrefixInput\";\n StorageValidationErrorCode[\"InvalidStorageOperationInput\"] = \"InvalidStorageOperationInput\";\n StorageValidationErrorCode[\"InvalidStoragePathInput\"] = \"InvalidStoragePathInput\";\n StorageValidationErrorCode[\"InvalidUploadSource\"] = \"InvalidUploadSource\";\n StorageValidationErrorCode[\"ObjectIsTooLarge\"] = \"ObjectIsTooLarge\";\n StorageValidationErrorCode[\"UrlExpirationMaxLimitExceed\"] = \"UrlExpirationMaxLimitExceed\";\n})(StorageValidationErrorCode || (StorageValidationErrorCode = {}));\nconst validationErrorMap = {\n [StorageValidationErrorCode.NoCredentials]: {\n message: 'Credentials should not be empty.',\n },\n [StorageValidationErrorCode.NoIdentityId]: {\n message: 'Missing identity ID when accessing objects in protected or private access level.',\n },\n [StorageValidationErrorCode.NoKey]: {\n message: 'Missing key in api call.',\n },\n [StorageValidationErrorCode.NoSourceKey]: {\n message: 'Missing source key in copy api call.',\n },\n [StorageValidationErrorCode.NoDestinationKey]: {\n message: 'Missing destination key in copy api call.',\n },\n [StorageValidationErrorCode.NoSourcePath]: {\n message: 'Missing source path in copy api call.',\n },\n [StorageValidationErrorCode.NoDestinationPath]: {\n message: 'Missing destination path in copy api call.',\n },\n [StorageValidationErrorCode.NoBucket]: {\n message: 'Missing bucket name while accessing object.',\n },\n [StorageValidationErrorCode.NoRegion]: {\n message: 'Missing region while accessing object.',\n },\n [StorageValidationErrorCode.UrlExpirationMaxLimitExceed]: {\n message: 'Url Expiration can not be greater than 7 Days.',\n },\n [StorageValidationErrorCode.ObjectIsTooLarge]: {\n message: 'Object size cannot not be greater than 5TB.',\n },\n [StorageValidationErrorCode.InvalidUploadSource]: {\n message: 'Upload source type can only be a `Blob`, `File`, `ArrayBuffer`, or `string`.',\n },\n [StorageValidationErrorCode.InvalidStorageOperationInput]: {\n message: 'Path or key parameter must be specified in the input. Both can not be specified at the same time.',\n },\n [StorageValidationErrorCode.InvalidStorageOperationPrefixInput]: {\n message: 'Both path and prefix can not be specified at the same time.',\n },\n [StorageValidationErrorCode.InvalidStoragePathInput]: {\n message: 'Input `path` does not allow a leading slash (/).',\n },\n [StorageValidationErrorCode.InvalidStorageBucket]: {\n message: 'Unable to lookup bucket from provided name in Amplify configuration.',\n },\n [StorageValidationErrorCode.InvalidCopyOperationStorageBucket]: {\n message: 'Missing bucket option in either source or destination.',\n },\n};\n\nexport { StorageValidationErrorCode, validationErrorMap };\n//# sourceMappingURL=validation.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass AmplifyError extends Error {\n /**\n * Constructs an AmplifyError.\n *\n * @param message text that describes the main problem.\n * @param underlyingError the underlying cause of the error.\n * @param recoverySuggestion suggestion to recover from the error.\n *\n */\n constructor({ message, name, recoverySuggestion, underlyingError, }) {\n super(message);\n this.name = name;\n this.underlyingError = underlyingError;\n this.recoverySuggestion = recoverySuggestion;\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = AmplifyError;\n Object.setPrototypeOf(this, AmplifyError.prototype);\n }\n}\n\nexport { AmplifyError };\n//# sourceMappingURL=AmplifyError.mjs.map\n","import { AmplifyError } from '@aws-amplify/core/internals/utils';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass StorageError extends AmplifyError {\n constructor(params) {\n super(params);\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = StorageError;\n Object.setPrototypeOf(this, StorageError.prototype);\n }\n}\n\nexport { StorageError };\n//# sourceMappingURL=StorageError.mjs.map\n","import { validationErrorMap } from '../types/validation.mjs';\nimport { StorageError } from '../StorageError.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction assertValidationError(assertion, name) {\n const { message, recoverySuggestion } = validationErrorMap[name];\n if (!assertion) {\n throw new StorageError({ name, message, recoverySuggestion });\n }\n}\n\nexport { assertValidationError };\n//# sourceMappingURL=assertValidationError.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst LOCAL_TESTING_S3_ENDPOINT = 'http://localhost:20005';\nconst DEFAULT_ACCESS_LEVEL = 'guest';\nconst DEFAULT_PRESIGN_EXPIRATION = 900;\nconst MAX_URL_EXPIRATION = 7 * 24 * 60 * 60 * 1000;\nconst MiB = 1024 * 1024;\nconst GiB = 1024 * MiB;\nconst TiB = 1024 * GiB;\nconst DEFAULT_PART_SIZE = 5 * MiB;\nconst MAX_OBJECT_SIZE = 5 * TiB;\nconst MAX_PARTS_COUNT = 10000;\nconst DEFAULT_QUEUE_SIZE = 4;\nconst UPLOADS_STORAGE_KEY = '__uploadInProgress';\nconst STORAGE_INPUT_PREFIX = 'prefix';\nconst STORAGE_INPUT_KEY = 'key';\nconst STORAGE_INPUT_PATH = 'path';\nconst DEFAULT_DELIMITER = '/';\n\nexport { DEFAULT_ACCESS_LEVEL, DEFAULT_DELIMITER, DEFAULT_PART_SIZE, DEFAULT_PRESIGN_EXPIRATION, DEFAULT_QUEUE_SIZE, LOCAL_TESTING_S3_ENDPOINT, MAX_OBJECT_SIZE, MAX_PARTS_COUNT, MAX_URL_EXPIRATION, STORAGE_INPUT_KEY, STORAGE_INPUT_PATH, STORAGE_INPUT_PREFIX, UPLOADS_STORAGE_KEY };\n//# sourceMappingURL=constants.mjs.map\n","import { StorageError } from './StorageError.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Internal-only class for CanceledError thrown by XHR handler or multipart upload when cancellation is invoked\n * without overwriting behavior.\n *\n * @internal\n */\nclass CanceledError extends StorageError {\n constructor(params = {}) {\n super({\n name: 'CanceledError',\n message: 'Upload is canceled by user',\n ...params,\n });\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n this.constructor = CanceledError;\n Object.setPrototypeOf(this, CanceledError.prototype);\n }\n}\n/**\n * Check if an error is caused by user calling `cancel()` on a upload/download task. If an overwriting error is\n * supplied to `task.cancel(errorOverwrite)`, this function will return `false`.\n * @param {unknown} error The unknown exception to be checked.\n * @returns - A boolean indicating if the error was from an upload cancellation\n */\nconst isCancelError = (error) => !!error && error instanceof CanceledError;\n\nexport { CanceledError, isCancelError };\n//# sourceMappingURL=CanceledError.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Logging constants\nconst AWS_CLOUDWATCH_CATEGORY = 'Logging';\nconst USER_AGENT_HEADER = 'x-amz-user-agent';\n// Error exception code constants\nconst NO_HUBCALLBACK_PROVIDED_EXCEPTION = 'NoHubcallbackProvidedException';\n\nexport { AWS_CLOUDWATCH_CATEGORY, NO_HUBCALLBACK_PROVIDED_EXCEPTION, USER_AGENT_HEADER };\n//# sourceMappingURL=constants.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar LogType;\n(function (LogType) {\n LogType[\"DEBUG\"] = \"DEBUG\";\n LogType[\"ERROR\"] = \"ERROR\";\n LogType[\"INFO\"] = \"INFO\";\n LogType[\"WARN\"] = \"WARN\";\n LogType[\"VERBOSE\"] = \"VERBOSE\";\n LogType[\"NONE\"] = \"NONE\";\n})(LogType || (LogType = {}));\n\nexport { LogType };\n//# sourceMappingURL=types.mjs.map\n","import { AWS_CLOUDWATCH_CATEGORY } from '../constants.mjs';\nimport { LogType } from './types.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst LOG_LEVELS = {\n VERBOSE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n NONE: 6,\n};\n/**\n * Write logs\n * @class Logger\n */\nclass ConsoleLogger {\n /**\n * @constructor\n * @param {string} name - Name of the logger\n */\n constructor(name, level = LogType.WARN) {\n this.name = name;\n this.level = level;\n this._pluggables = [];\n }\n _padding(n) {\n return n < 10 ? '0' + n : '' + n;\n }\n _ts() {\n const dt = new Date();\n return ([this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(':') +\n '.' +\n dt.getMilliseconds());\n }\n configure(config) {\n if (!config)\n return this._config;\n this._config = config;\n return this._config;\n }\n /**\n * Write log\n * @method\n * @memeberof Logger\n * @param {LogType|string} type - log type, default INFO\n * @param {string|object} msg - Logging message or object\n */\n _log(type, ...msg) {\n let loggerLevelName = this.level;\n if (ConsoleLogger.LOG_LEVEL) {\n loggerLevelName = ConsoleLogger.LOG_LEVEL;\n }\n if (typeof window !== 'undefined' && window.LOG_LEVEL) {\n loggerLevelName = window.LOG_LEVEL;\n }\n const loggerLevel = LOG_LEVELS[loggerLevelName];\n const typeLevel = LOG_LEVELS[type];\n if (!(typeLevel >= loggerLevel)) {\n // Do nothing if type is not greater than or equal to logger level (handle undefined)\n return;\n }\n let log = console.log.bind(console);\n if (type === LogType.ERROR && console.error) {\n log = console.error.bind(console);\n }\n if (type === LogType.WARN && console.warn) {\n log = console.warn.bind(console);\n }\n if (ConsoleLogger.BIND_ALL_LOG_LEVELS) {\n if (type === LogType.INFO && console.info) {\n log = console.info.bind(console);\n }\n if (type === LogType.DEBUG && console.debug) {\n log = console.debug.bind(console);\n }\n }\n const prefix = `[${type}] ${this._ts()} ${this.name}`;\n let message = '';\n if (msg.length === 1 && typeof msg[0] === 'string') {\n message = `${prefix} - ${msg[0]}`;\n log(message);\n }\n else if (msg.length === 1) {\n message = `${prefix} ${msg[0]}`;\n log(prefix, msg[0]);\n }\n else if (typeof msg[0] === 'string') {\n let obj = msg.slice(1);\n if (obj.length === 1) {\n obj = obj[0];\n }\n message = `${prefix} - ${msg[0]} ${obj}`;\n log(`${prefix} - ${msg[0]}`, obj);\n }\n else {\n message = `${prefix} ${msg}`;\n log(prefix, msg);\n }\n for (const plugin of this._pluggables) {\n const logEvent = { message, timestamp: Date.now() };\n plugin.pushLogs([logEvent]);\n }\n }\n /**\n * Write General log. Default to INFO\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n log(...msg) {\n this._log(LogType.INFO, ...msg);\n }\n /**\n * Write INFO log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n info(...msg) {\n this._log(LogType.INFO, ...msg);\n }\n /**\n * Write WARN log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n warn(...msg) {\n this._log(LogType.WARN, ...msg);\n }\n /**\n * Write ERROR log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n error(...msg) {\n this._log(LogType.ERROR, ...msg);\n }\n /**\n * Write DEBUG log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n debug(...msg) {\n this._log(LogType.DEBUG, ...msg);\n }\n /**\n * Write VERBOSE log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n verbose(...msg) {\n this._log(LogType.VERBOSE, ...msg);\n }\n addPluggable(pluggable) {\n if (pluggable && pluggable.getCategoryName() === AWS_CLOUDWATCH_CATEGORY) {\n this._pluggables.push(pluggable);\n pluggable.configure(this._config);\n }\n }\n listPluggables() {\n return this._pluggables;\n }\n}\nConsoleLogger.LOG_LEVEL = null;\nConsoleLogger.BIND_ALL_LOG_LEVELS = false;\n\nexport { ConsoleLogger };\n//# sourceMappingURL=ConsoleLogger.mjs.map\n","import { ConsoleLogger } from '@aws-amplify/core';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst logger = new ConsoleLogger('Storage');\n\nexport { logger };\n//# sourceMappingURL=logger.mjs.map\n","import { isCancelError } from '../../../errors/CanceledError.mjs';\nimport '../../../errors/types/validation.mjs';\nimport '@aws-amplify/core/internals/utils';\nimport { logger } from '../../../utils/logger.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst createCancellableTask = ({ job, onCancel, }) => {\n const state = 'IN_PROGRESS';\n let canceledErrorMessage;\n const cancelableTask = {\n cancel: (message) => {\n const { state: taskState } = cancelableTask;\n if (taskState === 'CANCELED' ||\n taskState === 'ERROR' ||\n taskState === 'SUCCESS') {\n logger.debug(`This task cannot be canceled. State: ${taskState}`);\n return;\n }\n cancelableTask.state = 'CANCELED';\n canceledErrorMessage = message;\n onCancel(canceledErrorMessage);\n },\n state,\n };\n const wrappedJobPromise = (async () => {\n try {\n const result = await job();\n cancelableTask.state = 'SUCCESS';\n return result;\n }\n catch (e) {\n if (isCancelError(e)) {\n cancelableTask.state = 'CANCELED';\n e.message = canceledErrorMessage ?? e.message;\n }\n cancelableTask.state = 'ERROR';\n throw e;\n }\n })();\n return Object.assign(cancelableTask, {\n result: wrappedJobPromise,\n });\n};\nconst createDownloadTask = createCancellableTask;\nconst createUploadTask = ({ job, onCancel, onResume, onPause, isMultipartUpload, }) => {\n const cancellableTask = createCancellableTask({\n job,\n onCancel,\n });\n const uploadTask = Object.assign(cancellableTask, {\n pause: () => {\n const { state } = uploadTask;\n if (!isMultipartUpload || state !== 'IN_PROGRESS') {\n logger.debug(`This task cannot be paused. State: ${state}`);\n return;\n }\n // TODO(eslint): remove this linter suppression.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n uploadTask.state = 'PAUSED';\n onPause?.();\n },\n resume: () => {\n const { state } = uploadTask;\n if (!isMultipartUpload || state !== 'PAUSED') {\n logger.debug(`This task cannot be resumed. State: ${state}`);\n return;\n }\n // TODO(eslint): remove this linter suppression.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n uploadTask.state = 'IN_PROGRESS';\n onResume?.();\n },\n });\n return uploadTask;\n};\n\nexport { createDownloadTask, createUploadTask };\n//# sourceMappingURL=transferTask.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Calculate the total size of the data to be uploaded. The total size is not required for multipart upload, as it's\n * only used in progress report.\n */\nconst byteLength = (input) => {\n if (input === null || input === undefined)\n return 0;\n if (typeof input === 'string') {\n let len = input.length;\n for (let i = len - 1; i >= 0; i--) {\n const code = input.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff)\n len++;\n else if (code > 0x7ff && code <= 0xffff)\n len += 2;\n if (code >= 0xdc00 && code <= 0xdfff)\n i--; // trail surrogate\n }\n return len;\n }\n else if (typeof input.byteLength === 'number') {\n // handles Uint8Array, ArrayBuffer, Buffer, and ArrayBufferView\n return input.byteLength;\n }\n else if (typeof input.size === 'number') {\n // handles browser File object\n return input.size;\n }\n // TODO: support Node.js stream size when Node.js runtime is supported out-of-box.\n return undefined;\n};\n\nexport { byteLength };\n//# sourceMappingURL=byteLength.mjs.map\n","import { ConsoleLogger } from '../Logger/ConsoleLogger.mjs';\nimport { NO_HUBCALLBACK_PROVIDED_EXCEPTION } from '../constants.mjs';\nimport { AmplifyError } from '../errors/AmplifyError.mjs';\nimport '../types/errors.mjs';\nimport '../errors/errorHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined'\n ? Symbol('amplify_default')\n : '@@amplify_default');\nconst logger = new ConsoleLogger('Hub');\nclass HubClass {\n constructor(name) {\n this.listeners = new Map();\n this.protectedChannels = [\n 'core',\n 'auth',\n 'api',\n 'analytics',\n 'interactions',\n 'pubsub',\n 'storage',\n 'ui',\n 'xr',\n ];\n this.name = name;\n }\n /**\n * Used internally to remove a Hub listener.\n *\n * @remarks\n * This private method is for internal use only. Instead of calling Hub.remove, call the result of Hub.listen.\n */\n _remove(channel, listener) {\n const holder = this.listeners.get(channel);\n if (!holder) {\n logger.warn(`No listeners for ${channel}`);\n return;\n }\n this.listeners.set(channel, [\n ...holder.filter(({ callback }) => callback !== listener),\n ]);\n }\n dispatch(channel, payload, source, ampSymbol) {\n if (typeof channel === 'string' &&\n this.protectedChannels.indexOf(channel) > -1) {\n const hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n if (!hasAccess) {\n logger.warn(`WARNING: ${channel} is protected and dispatching on it can have unintended consequences`);\n }\n }\n const capsule = {\n channel,\n payload: { ...payload },\n source,\n patternInfo: [],\n };\n try {\n this._toListeners(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n }\n listen(channel, callback, listenerName = 'noname') {\n let cb;\n if (typeof callback !== 'function') {\n throw new AmplifyError({\n name: NO_HUBCALLBACK_PROVIDED_EXCEPTION,\n message: 'No callback supplied to Hub',\n });\n }\n else {\n // Needs to be casted as a more generic type\n cb = callback;\n }\n let holder = this.listeners.get(channel);\n if (!holder) {\n holder = [];\n this.listeners.set(channel, holder);\n }\n holder.push({\n name: listenerName,\n callback: cb,\n });\n return () => {\n this._remove(channel, cb);\n };\n }\n _toListeners(capsule) {\n const { channel, payload } = capsule;\n const holder = this.listeners.get(channel);\n if (holder) {\n holder.forEach(listener => {\n logger.debug(`Dispatching to ${channel} with `, payload);\n try {\n listener.callback(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n });\n }\n }\n}\n/* We export a __default__ instance of HubClass to use it as a\npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events. */\nconst Hub = new HubClass('__default__');\n/**\n * @internal\n *\n * Internal hub used for core Amplify functionality. Not intended for use outside of Amplify.\n *\n */\nconst HubInternal = new HubClass('internal-hub');\n\nexport { AMPLIFY_SYMBOL, Hub, HubClass, HubInternal };\n//# sourceMappingURL=index.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst deepFreeze = (object) => {\n const propNames = Reflect.ownKeys(object);\n for (const name of propNames) {\n const value = object[name];\n if ((value && typeof value === 'object') || typeof value === 'function') {\n deepFreeze(value);\n }\n }\n return Object.freeze(object);\n};\n\nexport { deepFreeze };\n//# sourceMappingURL=deepFreeze.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst ADD_OAUTH_LISTENER = Symbol('oauth-listener');\n\nexport { ADD_OAUTH_LISTENER };\n//# sourceMappingURL=constants.mjs.map\n","import { ConsoleLogger } from './Logger/ConsoleLogger.mjs';\nimport { AmplifyError } from './errors/AmplifyError.mjs';\nimport './types/errors.mjs';\nimport './errors/errorHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst logger = new ConsoleLogger('parseAWSExports');\nconst authTypeMapping = {\n API_KEY: 'apiKey',\n AWS_IAM: 'iam',\n AMAZON_COGNITO_USER_POOLS: 'userPool',\n OPENID_CONNECT: 'oidc',\n NONE: 'none',\n AWS_LAMBDA: 'lambda',\n // `LAMBDA` is an incorrect value that was added during the v6 rewrite.\n // Keeping it as a valid value until v7 to prevent breaking customers who might\n // be relying on it as a workaround.\n // ref: https://github.com/aws-amplify/amplify-js/pull/12922\n // TODO: @v7 remove next line\n LAMBDA: 'lambda',\n};\n/**\n * Converts the object imported from `aws-exports.js` or `amplifyconfiguration.json` files generated by\n * the Amplify CLI into an object that conforms to the {@link ResourcesConfig}.\n *\n * @param config A configuration object imported from `aws-exports.js` or `amplifyconfiguration.json`.\n *\n * @returns An object that conforms to the {@link ResourcesConfig} .\n */\nconst parseAWSExports = (config = {}) => {\n if (!Object.prototype.hasOwnProperty.call(config, 'aws_project_region')) {\n throw new AmplifyError({\n name: 'InvalidParameterException',\n message: 'Invalid config parameter.',\n recoverySuggestion: 'Ensure passing the config object imported from `amplifyconfiguration.json`.',\n });\n }\n const { aws_appsync_apiKey, aws_appsync_authenticationType, aws_appsync_graphqlEndpoint, aws_appsync_region, aws_bots_config, aws_cognito_identity_pool_id, aws_cognito_sign_up_verification_method, aws_cognito_mfa_configuration, aws_cognito_mfa_types, aws_cognito_password_protection_settings, aws_cognito_verification_mechanisms, aws_cognito_signup_attributes, aws_cognito_social_providers, aws_cognito_username_attributes, aws_mandatory_sign_in, aws_mobile_analytics_app_id, aws_mobile_analytics_app_region, aws_user_files_s3_bucket, aws_user_files_s3_bucket_region, aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing, aws_user_pools_id, aws_user_pools_web_client_id, geo, oauth, predictions, aws_cloud_logic_custom, Notifications, modelIntrospection, } = config;\n const amplifyConfig = {};\n // Analytics\n if (aws_mobile_analytics_app_id) {\n amplifyConfig.Analytics = {\n Pinpoint: {\n appId: aws_mobile_analytics_app_id,\n region: aws_mobile_analytics_app_region,\n },\n };\n }\n // Notifications\n const { InAppMessaging, Push } = Notifications ?? {};\n if (InAppMessaging?.AWSPinpoint || Push?.AWSPinpoint) {\n if (InAppMessaging?.AWSPinpoint) {\n const { appId, region } = InAppMessaging.AWSPinpoint;\n amplifyConfig.Notifications = {\n InAppMessaging: {\n Pinpoint: {\n appId,\n region,\n },\n },\n };\n }\n if (Push?.AWSPinpoint) {\n const { appId, region } = Push.AWSPinpoint;\n amplifyConfig.Notifications = {\n ...amplifyConfig.Notifications,\n PushNotification: {\n Pinpoint: {\n appId,\n region,\n },\n },\n };\n }\n }\n // Interactions\n if (Array.isArray(aws_bots_config)) {\n amplifyConfig.Interactions = {\n LexV1: Object.fromEntries(aws_bots_config.map(bot => [bot.name, bot])),\n };\n }\n // API\n if (aws_appsync_graphqlEndpoint) {\n const defaultAuthMode = authTypeMapping[aws_appsync_authenticationType];\n if (!defaultAuthMode) {\n logger.debug(`Invalid authentication type ${aws_appsync_authenticationType}. Falling back to IAM.`);\n }\n amplifyConfig.API = {\n GraphQL: {\n endpoint: aws_appsync_graphqlEndpoint,\n apiKey: aws_appsync_apiKey,\n region: aws_appsync_region,\n defaultAuthMode: defaultAuthMode ?? 'iam',\n },\n };\n if (modelIntrospection) {\n amplifyConfig.API.GraphQL.modelIntrospection = modelIntrospection;\n }\n }\n // Auth\n const mfaConfig = aws_cognito_mfa_configuration\n ? {\n status: aws_cognito_mfa_configuration &&\n aws_cognito_mfa_configuration.toLowerCase(),\n totpEnabled: aws_cognito_mfa_types?.includes('TOTP') ?? false,\n smsEnabled: aws_cognito_mfa_types?.includes('SMS') ?? false,\n }\n : undefined;\n const passwordFormatConfig = aws_cognito_password_protection_settings\n ? {\n minLength: aws_cognito_password_protection_settings.passwordPolicyMinLength,\n requireLowercase: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_LOWERCASE') ?? false,\n requireUppercase: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_UPPERCASE') ?? false,\n requireNumbers: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_NUMBERS') ?? false,\n requireSpecialCharacters: aws_cognito_password_protection_settings.passwordPolicyCharacters?.includes('REQUIRES_SYMBOLS') ?? false,\n }\n : undefined;\n const mergedUserAttributes = Array.from(new Set([\n ...(aws_cognito_verification_mechanisms ?? []),\n ...(aws_cognito_signup_attributes ?? []),\n ]));\n const userAttributes = mergedUserAttributes.reduce((attributes, key) => ({\n ...attributes,\n // All user attributes generated by the CLI are required\n [key.toLowerCase()]: { required: true },\n }), {});\n const loginWithEmailEnabled = aws_cognito_username_attributes?.includes('EMAIL') ?? false;\n const loginWithPhoneEnabled = aws_cognito_username_attributes?.includes('PHONE_NUMBER') ?? false;\n if (aws_cognito_identity_pool_id || aws_user_pools_id) {\n amplifyConfig.Auth = {\n Cognito: {\n identityPoolId: aws_cognito_identity_pool_id,\n allowGuestAccess: aws_mandatory_sign_in !== 'enable',\n signUpVerificationMethod: aws_cognito_sign_up_verification_method,\n userAttributes,\n userPoolClientId: aws_user_pools_web_client_id,\n userPoolId: aws_user_pools_id,\n mfa: mfaConfig,\n passwordFormat: passwordFormatConfig,\n loginWith: {\n username: !(loginWithEmailEnabled || loginWithPhoneEnabled),\n email: loginWithEmailEnabled,\n phone: loginWithPhoneEnabled,\n },\n },\n };\n }\n const hasOAuthConfig = oauth ? Object.keys(oauth).length > 0 : false;\n const hasSocialProviderConfig = aws_cognito_social_providers\n ? aws_cognito_social_providers.length > 0\n : false;\n if (amplifyConfig.Auth && hasOAuthConfig) {\n amplifyConfig.Auth.Cognito.loginWith = {\n ...amplifyConfig.Auth.Cognito.loginWith,\n oauth: {\n ...getOAuthConfig(oauth),\n ...(hasSocialProviderConfig && {\n providers: parseSocialProviders(aws_cognito_social_providers),\n }),\n },\n };\n }\n // Storage\n if (aws_user_files_s3_bucket) {\n amplifyConfig.Storage = {\n S3: {\n bucket: aws_user_files_s3_bucket,\n region: aws_user_files_s3_bucket_region,\n dangerouslyConnectToHttpEndpointForTesting: aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing,\n },\n };\n }\n // Geo\n if (geo) {\n const { amazon_location_service } = geo;\n amplifyConfig.Geo = {\n LocationService: {\n maps: amazon_location_service.maps,\n geofenceCollections: amazon_location_service.geofenceCollections,\n searchIndices: amazon_location_service.search_indices,\n region: amazon_location_service.region,\n },\n };\n }\n // REST API\n if (aws_cloud_logic_custom) {\n amplifyConfig.API = {\n ...amplifyConfig.API,\n REST: aws_cloud_logic_custom.reduce((acc, api) => {\n const { name, endpoint, region, service } = api;\n return {\n ...acc,\n [name]: {\n endpoint,\n ...(service ? { service } : undefined),\n ...(region ? { region } : undefined),\n },\n };\n }, {}),\n };\n }\n // Predictions\n if (predictions) {\n // map VoiceId from speechGenerator defaults to voiceId\n const { VoiceId: voiceId } = predictions?.convert?.speechGenerator?.defaults ?? {};\n amplifyConfig.Predictions = voiceId\n ? {\n ...predictions,\n convert: {\n ...predictions.convert,\n speechGenerator: {\n ...predictions.convert.speechGenerator,\n defaults: { voiceId },\n },\n },\n }\n : predictions;\n }\n return amplifyConfig;\n};\nconst getRedirectUrl = (redirectStr) => redirectStr?.split(',') ?? [];\nconst getOAuthConfig = ({ domain, scope, redirectSignIn, redirectSignOut, responseType, }) => ({\n domain,\n scopes: scope,\n redirectSignIn: getRedirectUrl(redirectSignIn),\n redirectSignOut: getRedirectUrl(redirectSignOut),\n responseType,\n});\nconst parseSocialProviders = (aws_cognito_social_providers) => {\n return aws_cognito_social_providers.map((provider) => {\n const updatedProvider = provider.toLowerCase();\n return updatedProvider.charAt(0).toUpperCase() + updatedProvider.slice(1);\n });\n};\n\nexport { parseAWSExports };\n//# sourceMappingURL=parseAWSExports.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction isAmplifyOutputs(config) {\n // version format initially will be '1' but is expected to be something like x.y where x is major and y minor version\n const { version } = config;\n if (!version) {\n return false;\n }\n return version.startsWith('1');\n}\nfunction parseStorage(amplifyOutputsStorageProperties) {\n if (!amplifyOutputsStorageProperties) {\n return undefined;\n }\n const { bucket_name, aws_region, buckets } = amplifyOutputsStorageProperties;\n return {\n S3: {\n bucket: bucket_name,\n region: aws_region,\n buckets: buckets && createBucketInfoMap(buckets),\n },\n };\n}\nfunction parseAuth(amplifyOutputsAuthProperties) {\n if (!amplifyOutputsAuthProperties) {\n return undefined;\n }\n const { user_pool_id, user_pool_client_id, identity_pool_id, password_policy, mfa_configuration, mfa_methods, unauthenticated_identities_enabled, oauth, username_attributes, standard_required_attributes, } = amplifyOutputsAuthProperties;\n const authConfig = {\n Cognito: {\n userPoolId: user_pool_id,\n userPoolClientId: user_pool_client_id,\n },\n };\n if (identity_pool_id) {\n authConfig.Cognito = {\n ...authConfig.Cognito,\n identityPoolId: identity_pool_id,\n };\n }\n if (password_policy) {\n authConfig.Cognito.passwordFormat = {\n requireLowercase: password_policy.require_lowercase,\n requireNumbers: password_policy.require_numbers,\n requireUppercase: password_policy.require_uppercase,\n requireSpecialCharacters: password_policy.require_symbols,\n minLength: password_policy.min_length ?? 6,\n };\n }\n if (mfa_configuration) {\n authConfig.Cognito.mfa = {\n status: getMfaStatus(mfa_configuration),\n smsEnabled: mfa_methods?.includes('SMS'),\n totpEnabled: mfa_methods?.includes('TOTP'),\n };\n }\n if (unauthenticated_identities_enabled) {\n authConfig.Cognito.allowGuestAccess = unauthenticated_identities_enabled;\n }\n if (oauth) {\n authConfig.Cognito.loginWith = {\n oauth: {\n domain: oauth.domain,\n redirectSignIn: oauth.redirect_sign_in_uri,\n redirectSignOut: oauth.redirect_sign_out_uri,\n responseType: oauth.response_type === 'token' ? 'token' : 'code',\n scopes: oauth.scopes,\n providers: getOAuthProviders(oauth.identity_providers),\n },\n };\n }\n if (username_attributes) {\n authConfig.Cognito.loginWith = {\n ...authConfig.Cognito.loginWith,\n email: username_attributes.includes('email'),\n phone: username_attributes.includes('phone_number'),\n // Signing in with a username is not currently supported in Gen2, this should always evaluate to false\n username: username_attributes.includes('username'),\n };\n }\n if (standard_required_attributes) {\n authConfig.Cognito.userAttributes = standard_required_attributes.reduce((acc, curr) => ({ ...acc, [curr]: { required: true } }), {});\n }\n return authConfig;\n}\nfunction parseAnalytics(amplifyOutputsAnalyticsProperties) {\n if (!amplifyOutputsAnalyticsProperties?.amazon_pinpoint) {\n return undefined;\n }\n const { amazon_pinpoint } = amplifyOutputsAnalyticsProperties;\n return {\n Pinpoint: {\n appId: amazon_pinpoint.app_id,\n region: amazon_pinpoint.aws_region,\n },\n };\n}\nfunction parseGeo(amplifyOutputsAnalyticsProperties) {\n if (!amplifyOutputsAnalyticsProperties) {\n return undefined;\n }\n const { aws_region, geofence_collections, maps, search_indices } = amplifyOutputsAnalyticsProperties;\n return {\n LocationService: {\n region: aws_region,\n searchIndices: search_indices,\n geofenceCollections: geofence_collections,\n maps,\n },\n };\n}\nfunction parseData(amplifyOutputsDataProperties) {\n if (!amplifyOutputsDataProperties) {\n return undefined;\n }\n const { aws_region, default_authorization_type, url, api_key, model_introspection, } = amplifyOutputsDataProperties;\n const GraphQL = {\n endpoint: url,\n defaultAuthMode: getGraphQLAuthMode(default_authorization_type),\n region: aws_region,\n apiKey: api_key,\n modelIntrospection: model_introspection,\n };\n return {\n GraphQL,\n };\n}\nfunction parseCustom(amplifyOutputsCustomProperties) {\n if (!amplifyOutputsCustomProperties?.events) {\n return undefined;\n }\n const { url, aws_region, api_key, default_authorization_type } = amplifyOutputsCustomProperties.events;\n const Events = {\n endpoint: url,\n defaultAuthMode: getGraphQLAuthMode(default_authorization_type),\n region: aws_region,\n apiKey: api_key,\n };\n return {\n Events,\n };\n}\nfunction parseNotifications(amplifyOutputsNotificationsProperties) {\n if (!amplifyOutputsNotificationsProperties) {\n return undefined;\n }\n const { aws_region, channels, amazon_pinpoint_app_id } = amplifyOutputsNotificationsProperties;\n const hasInAppMessaging = channels.includes('IN_APP_MESSAGING');\n const hasPushNotification = channels.includes('APNS') || channels.includes('FCM');\n if (!(hasInAppMessaging || hasPushNotification)) {\n return undefined;\n }\n // At this point, we know the Amplify outputs contains at least one supported channel\n const notificationsConfig = {};\n if (hasInAppMessaging) {\n notificationsConfig.InAppMessaging = {\n Pinpoint: {\n appId: amazon_pinpoint_app_id,\n region: aws_region,\n },\n };\n }\n if (hasPushNotification) {\n notificationsConfig.PushNotification = {\n Pinpoint: {\n appId: amazon_pinpoint_app_id,\n region: aws_region,\n },\n };\n }\n return notificationsConfig;\n}\nfunction parseAmplifyOutputs(amplifyOutputs) {\n const resourcesConfig = {};\n if (amplifyOutputs.storage) {\n resourcesConfig.Storage = parseStorage(amplifyOutputs.storage);\n }\n if (amplifyOutputs.auth) {\n resourcesConfig.Auth = parseAuth(amplifyOutputs.auth);\n }\n if (amplifyOutputs.analytics) {\n resourcesConfig.Analytics = parseAnalytics(amplifyOutputs.analytics);\n }\n if (amplifyOutputs.geo) {\n resourcesConfig.Geo = parseGeo(amplifyOutputs.geo);\n }\n if (amplifyOutputs.data) {\n resourcesConfig.API = parseData(amplifyOutputs.data);\n }\n if (amplifyOutputs.custom) {\n const customConfig = parseCustom(amplifyOutputs.custom);\n if (customConfig && 'Events' in customConfig) {\n resourcesConfig.API = { ...resourcesConfig.API, ...customConfig };\n }\n }\n if (amplifyOutputs.notifications) {\n resourcesConfig.Notifications = parseNotifications(amplifyOutputs.notifications);\n }\n return resourcesConfig;\n}\nconst authModeNames = {\n AMAZON_COGNITO_USER_POOLS: 'userPool',\n API_KEY: 'apiKey',\n AWS_IAM: 'iam',\n AWS_LAMBDA: 'lambda',\n OPENID_CONNECT: 'oidc',\n};\nfunction getGraphQLAuthMode(authType) {\n return authModeNames[authType];\n}\nconst providerNames = {\n GOOGLE: 'Google',\n LOGIN_WITH_AMAZON: 'Amazon',\n FACEBOOK: 'Facebook',\n SIGN_IN_WITH_APPLE: 'Apple',\n};\nfunction getOAuthProviders(providers = []) {\n return providers.reduce((oAuthProviders, provider) => {\n if (providerNames[provider] !== undefined) {\n oAuthProviders.push(providerNames[provider]);\n }\n return oAuthProviders;\n }, []);\n}\nfunction getMfaStatus(mfaConfiguration) {\n if (mfaConfiguration === 'OPTIONAL')\n return 'optional';\n if (mfaConfiguration === 'REQUIRED')\n return 'on';\n return 'off';\n}\nfunction createBucketInfoMap(buckets) {\n const mappedBuckets = {};\n buckets.forEach(({ name, bucket_name: bucketName, aws_region: region }) => {\n if (name in mappedBuckets) {\n throw new Error(`Duplicate friendly name found: ${name}. Name must be unique.`);\n }\n mappedBuckets[name] = {\n bucketName,\n region,\n };\n });\n return mappedBuckets;\n}\n\nexport { isAmplifyOutputs, parseAmplifyOutputs, parseAnalytics };\n//# sourceMappingURL=parseAmplifyOutputs.mjs.map\n","import { parseAWSExports } from '../parseAWSExports.mjs';\nimport { isAmplifyOutputs, parseAmplifyOutputs } from '../parseAmplifyOutputs.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Parses the variety of configuration shapes that Amplify can accept into a ResourcesConfig.\n *\n * @param amplifyConfig An Amplify configuration object conforming to one of the supported schemas.\n * @return A ResourcesConfig for the provided configuration object.\n */\nconst parseAmplifyConfig = (amplifyConfig) => {\n if (Object.keys(amplifyConfig).some(key => key.startsWith('aws_'))) {\n return parseAWSExports(amplifyConfig);\n }\n else if (isAmplifyOutputs(amplifyConfig)) {\n return parseAmplifyOutputs(amplifyConfig);\n }\n else {\n return amplifyConfig;\n }\n};\n\nexport { parseAmplifyConfig };\n//# sourceMappingURL=parseAmplifyConfig.mjs.map\n","function isTokenExpired({ expiresAt, clockDrift, }) {\n const currentTime = Date.now();\n return currentTime + clockDrift > expiresAt;\n}\nclass AuthClass {\n /**\n * Configure Auth category\n *\n * @internal\n *\n * @param authResourcesConfig - Resources configurations required by Auth providers.\n * @param authOptions - Client options used by library\n *\n * @returns void\n */\n configure(authResourcesConfig, authOptions) {\n this.authConfig = authResourcesConfig;\n this.authOptions = authOptions;\n }\n /**\n * Fetch the auth tokens, and the temporary AWS credentials and identity if they are configured. By default it\n * does not refresh the auth tokens or credentials if they are loaded in storage already. You can force a refresh\n * with `{ forceRefresh: true }` input.\n *\n * @param options - Options configuring the fetch behavior.\n *\n * @returns Promise of current auth session {@link AuthSession}.\n */\n async fetchAuthSession(options = {}) {\n let credentialsAndIdentityId;\n let userSub;\n // Get tokens will throw if session cannot be refreshed (network or service error) or return null if not available\n const tokens = await this.getTokens(options);\n if (tokens) {\n userSub = tokens.accessToken?.payload?.sub;\n // getCredentialsAndIdentityId will throw if cannot get credentials (network or service error)\n credentialsAndIdentityId =\n await this.authOptions?.credentialsProvider?.getCredentialsAndIdentityId({\n authConfig: this.authConfig,\n tokens,\n authenticated: true,\n forceRefresh: options.forceRefresh,\n });\n }\n else {\n // getCredentialsAndIdentityId will throw if cannot get credentials (network or service error)\n credentialsAndIdentityId =\n await this.authOptions?.credentialsProvider?.getCredentialsAndIdentityId({\n authConfig: this.authConfig,\n authenticated: false,\n forceRefresh: options.forceRefresh,\n });\n }\n return {\n tokens,\n credentials: credentialsAndIdentityId?.credentials,\n identityId: credentialsAndIdentityId?.identityId,\n userSub,\n };\n }\n async clearCredentials() {\n await this.authOptions?.credentialsProvider?.clearCredentialsAndIdentityId();\n }\n async getTokens(options) {\n return ((await this.authOptions?.tokenProvider?.getTokens(options)) ?? undefined);\n }\n}\n\nexport { AuthClass, isTokenExpired };\n//# sourceMappingURL=index.mjs.map\n","/**\n * @internal\n */\nexport var BLOCK_SIZE = 64;\n/**\n * @internal\n */\nexport var DIGEST_LENGTH = 32;\n/**\n * @internal\n */\nexport var KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n/**\n * @internal\n */\nexport var INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n/**\n * @internal\n */\nexport var MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n//# sourceMappingURL=constants.js.map","import { BLOCK_SIZE, DIGEST_LENGTH, INIT, KEY, MAX_HASHABLE_LENGTH } from \"./constants\";\n/**\n * @internal\n */\nvar RawSha256 = /** @class */ (function () {\n function RawSha256() {\n this.state = Int32Array.from(INIT);\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @internal\n */\n this.finished = false;\n }\n RawSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n };\n RawSha256.prototype.digest = function () {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Uint8Array(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return out;\n };\n RawSha256.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var state0 = state[0], state1 = state[1], state2 = state[2], state3 = state[3], state4 = state[4], state5 = state[5], state6 = state[6], state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n this.temp[i] =\n ((t1_1 + this.temp[i - 7]) | 0) + ((t2_1 + this.temp[i - 16]) | 0);\n }\n var t1 = ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n var t2 = ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n };\n return RawSha256;\n}());\nexport { RawSha256 };\n//# sourceMappingURL=RawSha256.js.map","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fromUtf8 as fromUtf8Browser } from \"@smithy/util-utf8\";\n// Quick polyfill\nvar fromUtf8 = typeof Buffer !== \"undefined\" && Buffer.from\n ? function (input) { return Buffer.from(input, \"utf8\"); }\n : fromUtf8Browser;\nexport function convertToBuffer(data) {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array)\n return data;\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\n//# sourceMappingURL=convertToBuffer.js.map","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n//# sourceMappingURL=isEmptyData.js.map","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport { uint32ArrayFrom } from './uint32ArrayFrom';\n//# sourceMappingURL=index.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\nvar Sha256 = /** @class */ (function () {\n function Sha256(secret) {\n this.secret = secret;\n this.hash = new RawSha256();\n this.reset();\n }\n Sha256.prototype.update = function (toHash) {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n try {\n this.hash.update(convertToBuffer(toHash));\n }\n catch (e) {\n this.error = e;\n }\n };\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n Sha256.prototype.digestSync = function () {\n if (this.error) {\n throw this.error;\n }\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n return this.outer.digest();\n }\n return this.hash.digest();\n };\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n Sha256.prototype.digest = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.digestSync()];\n });\n });\n };\n Sha256.prototype.reset = function () {\n this.hash = new RawSha256();\n if (this.secret) {\n this.outer = new RawSha256();\n var inner = bufferFromSecret(this.secret);\n var outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n for (var i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n this.hash.update(inner);\n this.outer.update(outer);\n // overwrite the copied key in memory\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n };\n return Sha256;\n}());\nexport { Sha256 };\nfunction bufferFromSecret(secret) {\n var input = convertToBuffer(secret);\n if (input.byteLength > BLOCK_SIZE) {\n var bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n//# sourceMappingURL=jsSha256.js.map","export * from \"./jsSha256\";\n//# sourceMappingURL=index.js.map","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexport function toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n","import { Hub, AMPLIFY_SYMBOL } from '../Hub/index.mjs';\nimport '../utils/getClientInfo/getClientInfo.mjs';\nimport '../utils/retry/retry.mjs';\nimport { deepFreeze } from '../utils/deepFreeze.mjs';\nimport '../parseAWSExports.mjs';\nimport { ADD_OAUTH_LISTENER } from './constants.mjs';\nimport 'uuid';\nimport { parseAmplifyConfig } from '../utils/parseAmplifyConfig.mjs';\nimport '../types/errors.mjs';\nimport '../errors/errorHelpers.mjs';\nimport './Auth/utils/errorHelpers.mjs';\nimport { AuthClass } from './Auth/index.mjs';\nimport '@aws-crypto/sha256-js';\nimport '@smithy/util-hex-encoding';\nimport '../Platform/index.mjs';\nimport '../Platform/types.mjs';\nimport '../BackgroundProcessManager/types.mjs';\nimport '../Reachability/Reachability.mjs';\nimport '../utils/sessionListener/index.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass AmplifyClass {\n constructor() {\n this.oAuthListener = undefined;\n this.resourcesConfig = {};\n this.libraryOptions = {};\n this.Auth = new AuthClass();\n }\n /**\n * Configures Amplify for use with your back-end resources.\n *\n * @remarks\n * This API does not perform any merging of either `resourcesConfig` or `libraryOptions`. The most recently\n * provided values will be used after configuration.\n *\n * @remarks\n * `configure` can be used to specify additional library options where available for supported categories.\n *\n * @param resourceConfig - Back-end resource configuration. Typically provided via the `aws-exports.js` file.\n * @param libraryOptions - Additional options for customizing the behavior of the library.\n */\n configure(resourcesConfig, libraryOptions) {\n const resolvedResourceConfig = parseAmplifyConfig(resourcesConfig);\n this.resourcesConfig = resolvedResourceConfig;\n if (libraryOptions) {\n this.libraryOptions = libraryOptions;\n }\n // Make resource config immutable\n this.resourcesConfig = deepFreeze(this.resourcesConfig);\n this.Auth.configure(this.resourcesConfig.Auth, this.libraryOptions.Auth);\n Hub.dispatch('core', {\n event: 'configure',\n data: this.resourcesConfig,\n }, 'Configure', AMPLIFY_SYMBOL);\n this.notifyOAuthListener();\n }\n /**\n * Provides access to the current back-end resource configuration for the Library.\n *\n * @returns Returns the immutable back-end resource configuration.\n */\n getConfig() {\n return this.resourcesConfig;\n }\n /** @internal */\n [ADD_OAUTH_LISTENER](listener) {\n if (this.resourcesConfig.Auth?.Cognito.loginWith?.oauth) {\n // when Amplify has been configured with a valid OAuth config while adding the listener, run it directly\n listener(this.resourcesConfig.Auth?.Cognito);\n }\n else {\n // otherwise register the listener and run it later when Amplify gets configured with a valid oauth config\n this.oAuthListener = listener;\n }\n }\n notifyOAuthListener() {\n if (!this.resourcesConfig.Auth?.Cognito.loginWith?.oauth ||\n !this.oAuthListener) {\n return;\n }\n this.oAuthListener(this.resourcesConfig.Auth?.Cognito);\n // the listener should only be notified once with a valid oauth config\n this.oAuthListener = undefined;\n }\n}\n/**\n * The `Amplify` utility is used to configure the library.\n *\n * @remarks\n * `Amplify` orchestrates cross-category communication within the library.\n */\nconst Amplify = new AmplifyClass();\n\nexport { Amplify, AmplifyClass };\n//# sourceMappingURL=Amplify.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar Framework;\n(function (Framework) {\n // < 100 - Web frameworks\n Framework[\"WebUnknown\"] = \"0\";\n Framework[\"React\"] = \"1\";\n Framework[\"NextJs\"] = \"2\";\n Framework[\"Angular\"] = \"3\";\n Framework[\"VueJs\"] = \"4\";\n Framework[\"Nuxt\"] = \"5\";\n Framework[\"Svelte\"] = \"6\";\n // 100s - Server side frameworks\n Framework[\"ServerSideUnknown\"] = \"100\";\n Framework[\"ReactSSR\"] = \"101\";\n Framework[\"NextJsSSR\"] = \"102\";\n Framework[\"AngularSSR\"] = \"103\";\n Framework[\"VueJsSSR\"] = \"104\";\n Framework[\"NuxtSSR\"] = \"105\";\n Framework[\"SvelteSSR\"] = \"106\";\n // 200s - Mobile framework\n Framework[\"ReactNative\"] = \"201\";\n Framework[\"Expo\"] = \"202\";\n})(Framework || (Framework = {}));\nvar Category;\n(function (Category) {\n Category[\"AI\"] = \"ai\";\n Category[\"API\"] = \"api\";\n Category[\"Auth\"] = \"auth\";\n Category[\"Analytics\"] = \"analytics\";\n Category[\"DataStore\"] = \"datastore\";\n Category[\"Geo\"] = \"geo\";\n Category[\"InAppMessaging\"] = \"inappmessaging\";\n Category[\"Interactions\"] = \"interactions\";\n Category[\"Predictions\"] = \"predictions\";\n Category[\"PubSub\"] = \"pubsub\";\n Category[\"PushNotification\"] = \"pushnotification\";\n Category[\"Storage\"] = \"storage\";\n})(Category || (Category = {}));\nvar AiAction;\n(function (AiAction) {\n AiAction[\"CreateConversation\"] = \"1\";\n AiAction[\"GetConversation\"] = \"2\";\n AiAction[\"ListConversations\"] = \"3\";\n AiAction[\"DeleteConversation\"] = \"4\";\n AiAction[\"SendMessage\"] = \"5\";\n AiAction[\"ListMessages\"] = \"6\";\n AiAction[\"OnMessage\"] = \"7\";\n AiAction[\"Generation\"] = \"8\";\n AiAction[\"UpdateConversation\"] = \"9\";\n})(AiAction || (AiAction = {}));\nvar AnalyticsAction;\n(function (AnalyticsAction) {\n AnalyticsAction[\"Record\"] = \"1\";\n AnalyticsAction[\"IdentifyUser\"] = \"2\";\n})(AnalyticsAction || (AnalyticsAction = {}));\nvar ApiAction;\n(function (ApiAction) {\n ApiAction[\"GraphQl\"] = \"1\";\n ApiAction[\"Get\"] = \"2\";\n ApiAction[\"Post\"] = \"3\";\n ApiAction[\"Put\"] = \"4\";\n ApiAction[\"Patch\"] = \"5\";\n ApiAction[\"Del\"] = \"6\";\n ApiAction[\"Head\"] = \"7\";\n})(ApiAction || (ApiAction = {}));\nvar AuthAction;\n(function (AuthAction) {\n AuthAction[\"SignUp\"] = \"1\";\n AuthAction[\"ConfirmSignUp\"] = \"2\";\n AuthAction[\"ResendSignUpCode\"] = \"3\";\n AuthAction[\"SignIn\"] = \"4\";\n AuthAction[\"FetchMFAPreference\"] = \"6\";\n AuthAction[\"UpdateMFAPreference\"] = \"7\";\n AuthAction[\"SetUpTOTP\"] = \"10\";\n AuthAction[\"VerifyTOTPSetup\"] = \"11\";\n AuthAction[\"ConfirmSignIn\"] = \"12\";\n AuthAction[\"DeleteUserAttributes\"] = \"15\";\n AuthAction[\"DeleteUser\"] = \"16\";\n AuthAction[\"UpdateUserAttributes\"] = \"17\";\n AuthAction[\"FetchUserAttributes\"] = \"18\";\n AuthAction[\"ConfirmUserAttribute\"] = \"22\";\n AuthAction[\"SignOut\"] = \"26\";\n AuthAction[\"UpdatePassword\"] = \"27\";\n AuthAction[\"ResetPassword\"] = \"28\";\n AuthAction[\"ConfirmResetPassword\"] = \"29\";\n AuthAction[\"FederatedSignIn\"] = \"30\";\n AuthAction[\"RememberDevice\"] = \"32\";\n AuthAction[\"ForgetDevice\"] = \"33\";\n AuthAction[\"FetchDevices\"] = \"34\";\n AuthAction[\"SendUserAttributeVerificationCode\"] = \"35\";\n AuthAction[\"SignInWithRedirect\"] = \"36\";\n})(AuthAction || (AuthAction = {}));\nvar DataStoreAction;\n(function (DataStoreAction) {\n DataStoreAction[\"Subscribe\"] = \"1\";\n DataStoreAction[\"GraphQl\"] = \"2\";\n})(DataStoreAction || (DataStoreAction = {}));\nvar GeoAction;\n(function (GeoAction) {\n GeoAction[\"SearchByText\"] = \"0\";\n GeoAction[\"SearchByCoordinates\"] = \"1\";\n GeoAction[\"SearchForSuggestions\"] = \"2\";\n GeoAction[\"SearchByPlaceId\"] = \"3\";\n GeoAction[\"SaveGeofences\"] = \"4\";\n GeoAction[\"GetGeofence\"] = \"5\";\n GeoAction[\"ListGeofences\"] = \"6\";\n GeoAction[\"DeleteGeofences\"] = \"7\";\n})(GeoAction || (GeoAction = {}));\nvar InAppMessagingAction;\n(function (InAppMessagingAction) {\n InAppMessagingAction[\"SyncMessages\"] = \"1\";\n InAppMessagingAction[\"IdentifyUser\"] = \"2\";\n InAppMessagingAction[\"NotifyMessageInteraction\"] = \"3\";\n})(InAppMessagingAction || (InAppMessagingAction = {}));\nvar InteractionsAction;\n(function (InteractionsAction) {\n InteractionsAction[\"None\"] = \"0\";\n})(InteractionsAction || (InteractionsAction = {}));\nvar PredictionsAction;\n(function (PredictionsAction) {\n PredictionsAction[\"Convert\"] = \"1\";\n PredictionsAction[\"Identify\"] = \"2\";\n PredictionsAction[\"Interpret\"] = \"3\";\n})(PredictionsAction || (PredictionsAction = {}));\nvar PubSubAction;\n(function (PubSubAction) {\n PubSubAction[\"Subscribe\"] = \"1\";\n})(PubSubAction || (PubSubAction = {}));\nvar PushNotificationAction;\n(function (PushNotificationAction) {\n PushNotificationAction[\"InitializePushNotifications\"] = \"1\";\n PushNotificationAction[\"IdentifyUser\"] = \"2\";\n})(PushNotificationAction || (PushNotificationAction = {}));\nvar StorageAction;\n(function (StorageAction) {\n StorageAction[\"UploadData\"] = \"1\";\n StorageAction[\"DownloadData\"] = \"2\";\n StorageAction[\"List\"] = \"3\";\n StorageAction[\"Copy\"] = \"4\";\n StorageAction[\"Remove\"] = \"5\";\n StorageAction[\"GetProperties\"] = \"6\";\n StorageAction[\"GetUrl\"] = \"7\";\n})(StorageAction || (StorageAction = {}));\n\nexport { AiAction, AnalyticsAction, ApiAction, AuthAction, Category, DataStoreAction, Framework, GeoAction, InAppMessagingAction, InteractionsAction, PredictionsAction, PubSubAction, PushNotificationAction, StorageAction };\n//# sourceMappingURL=types.mjs.map\n","export const BLOCK_SIZE = 64;\nexport const DIGEST_LENGTH = 16;\nexport const INIT = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476];\n","import { fromUtf8 } from \"@smithy/util-utf8\";\nimport { BLOCK_SIZE, DIGEST_LENGTH, INIT } from \"./constants\";\nexport class Md5 {\n constructor() {\n this.reset();\n }\n update(sourceData) {\n if (isEmptyData(sourceData)) {\n return;\n }\n else if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n const data = convertToBuffer(sourceData);\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n async digest() {\n if (!this.finished) {\n const { buffer, bufferLength: undecoratedLength, bytesHashed } = this;\n const bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 0b10000000);\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n const out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (let i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n return new Uint8Array(out.buffer, out.byteOffset, out.byteLength);\n }\n hashBuffer() {\n const { buffer, state } = this;\n let a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xffffffff;\n state[1] = (b + state[1]) & 0xffffffff;\n state[2] = (c + state[2]) & 0xffffffff;\n state[3] = (d + state[3]) & 0xffffffff;\n }\n reset() {\n this.state = Uint32Array.from(INIT);\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n }\n}\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xffffffff) + ((x + t) & 0xffffffff)) & 0xffffffff;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xffffffff;\n}\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\nfunction convertToBuffer(data) {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction bytesToBase64(bytes) {\n const base64Str = Array.from(bytes, x => String.fromCodePoint(x)).join('');\n return btoa(base64Str);\n}\nfunction toBase64(input) {\n if (typeof input === 'string') {\n return bytesToBase64(new TextEncoder().encode(input));\n }\n return bytesToBase64(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n}\n\nexport { toBase64 };\n//# sourceMappingURL=index.browser.mjs.map\n","import { Md5 } from '@smithy/md5-js';\nimport '@aws-amplify/core/internals/aws-client-utils';\nimport './client/runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './client/runtime/s3TransferHandler/xhr.mjs';\nimport { toBase64 } from './client/runtime/base64/index.native.mjs';\nimport '@aws-amplify/core/internals/utils';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst calculateContentMd5 = async (content) => {\n const hasher = new Md5();\n const buffer = content instanceof Blob ? await readFile(content) : content;\n hasher.update(buffer);\n const digest = await hasher.digest();\n return toBase64(digest);\n};\nconst readFile = (file) => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result);\n };\n reader.onabort = () => {\n reject(new Error('Read aborted'));\n };\n reader.onerror = () => {\n reject(reader.error);\n };\n reader.readAsArrayBuffer(file);\n});\n\nexport { calculateContentMd5 };\n//# sourceMappingURL=md5.mjs.map\n","import { assertValidationError } from '../errors/utils/assertValidationError.mjs';\nimport { StorageValidationErrorCode } from '../errors/types/validation.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst resolvePrefix = ({ accessLevel, targetIdentityId, }) => {\n if (accessLevel === 'private') {\n assertValidationError(!!targetIdentityId, StorageValidationErrorCode.NoIdentityId);\n return `private/${targetIdentityId}/`;\n }\n else if (accessLevel === 'protected') {\n assertValidationError(!!targetIdentityId, StorageValidationErrorCode.NoIdentityId);\n return `protected/${targetIdentityId}/`;\n }\n else {\n return 'public/';\n }\n};\n\nexport { resolvePrefix };\n//# sourceMappingURL=resolvePrefix.mjs.map\n","import { assertValidationError } from '../../../errors/utils/assertValidationError.mjs';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation.mjs';\nimport { resolvePrefix } from '../../../utils/resolvePrefix.mjs';\nimport { DEFAULT_ACCESS_LEVEL, LOCAL_TESTING_S3_ENDPOINT } from './constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * resolve the common input options for S3 API handlers from Amplify configuration and library options.\n *\n * @param {AmplifyClassV6} amplify The Amplify instance.\n * @param {S3ApiOptions} apiOptions The input options for S3 provider.\n * @returns {Promise} The resolved common input options for S3 API handlers.\n * @throws A `StorageError` with `error.name` from `StorageValidationErrorCode` indicating invalid\n * configurations or Amplify library options.\n *\n * @internal\n */\nconst resolveS3ConfigAndInput = async (amplify, apiOptions) => {\n /**\n * IdentityId is always cached in memory so we can safely make calls here. It\n * should be stable even for unauthenticated users, regardless of credentials.\n */\n const { identityId } = await amplify.Auth.fetchAuthSession();\n assertValidationError(!!identityId, StorageValidationErrorCode.NoIdentityId);\n /**\n * A credentials provider function instead of a static credentials object is\n * used because the long-running tasks like multipart upload may span over the\n * credentials expiry. Auth.fetchAuthSession() automatically refreshes the\n * credentials if they are expired.\n */\n const credentialsProvider = async () => {\n const { credentials } = await amplify.Auth.fetchAuthSession();\n assertValidationError(!!credentials, StorageValidationErrorCode.NoCredentials);\n return credentials;\n };\n const { bucket: defaultBucket, region: defaultRegion, dangerouslyConnectToHttpEndpointForTesting, buckets, } = amplify.getConfig()?.Storage?.S3 ?? {};\n const { bucket = defaultBucket, region = defaultRegion } = (apiOptions?.bucket && resolveBucketConfig(apiOptions, buckets)) || {};\n assertValidationError(!!bucket, StorageValidationErrorCode.NoBucket);\n assertValidationError(!!region, StorageValidationErrorCode.NoRegion);\n const { defaultAccessLevel, prefixResolver = resolvePrefix, isObjectLockEnabled, } = amplify.libraryOptions?.Storage?.S3 ?? {};\n const keyPrefix = await prefixResolver({\n accessLevel: apiOptions?.accessLevel ?? defaultAccessLevel ?? DEFAULT_ACCESS_LEVEL,\n // use conditional assign to make tsc happy because StorageOptions is a union type that may not have targetIdentityId\n targetIdentityId: apiOptions?.accessLevel === 'protected'\n ? (apiOptions?.targetIdentityId ?? identityId)\n : identityId,\n });\n return {\n s3Config: {\n credentials: credentialsProvider,\n region,\n useAccelerateEndpoint: apiOptions?.useAccelerateEndpoint,\n ...(dangerouslyConnectToHttpEndpointForTesting\n ? {\n customEndpoint: LOCAL_TESTING_S3_ENDPOINT,\n forcePathStyle: true,\n }\n : {}),\n },\n bucket,\n keyPrefix,\n identityId,\n isObjectLockEnabled,\n };\n};\nconst resolveBucketConfig = (apiOptions, buckets) => {\n if (typeof apiOptions.bucket === 'string') {\n const bucketConfig = buckets?.[apiOptions.bucket];\n assertValidationError(!!bucketConfig, StorageValidationErrorCode.InvalidStorageBucket);\n return { bucket: bucketConfig.bucketName, region: bucketConfig.region };\n }\n if (typeof apiOptions.bucket === 'object') {\n return {\n bucket: apiOptions.bucket.bucketName,\n region: apiOptions.bucket.region,\n };\n }\n};\n\nexport { resolveS3ConfigAndInput };\n//# sourceMappingURL=resolveS3ConfigAndInput.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst isInputWithPath = (input) => {\n return input.path !== undefined;\n};\n\nexport { isInputWithPath };\n//# sourceMappingURL=isInputWithPath.mjs.map\n","import { assertValidationError } from '../../../errors/utils/assertValidationError.mjs';\nimport { StorageValidationErrorCode } from '../../../errors/types/validation.mjs';\nimport { isInputWithPath } from './isInputWithPath.mjs';\nimport { STORAGE_INPUT_PATH, STORAGE_INPUT_KEY } from './constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst validateStorageOperationInput = (input, identityId) => {\n assertValidationError(\n // Key present without a path\n (!!input.key && !input.path) ||\n // Path present without a key\n (!input.key && !!input.path), StorageValidationErrorCode.InvalidStorageOperationInput);\n if (isInputWithPath(input)) {\n const { path } = input;\n const objectKey = typeof path === 'string' ? path : path({ identityId });\n assertValidationError(!objectKey.startsWith('/'), StorageValidationErrorCode.InvalidStoragePathInput);\n return {\n inputType: STORAGE_INPUT_PATH,\n objectKey,\n };\n }\n else {\n return { inputType: STORAGE_INPUT_KEY, objectKey: input.key };\n }\n};\n\nexport { validateStorageOperationInput };\n//# sourceMappingURL=validateStorageOperationInput.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst parseMetadata = (response) => {\n const { headers, statusCode } = response;\n return {\n ...(isMetadataBearer(response) ? response.$metadata : {}),\n httpStatusCode: statusCode,\n requestId: headers['x-amzn-requestid'] ??\n headers['x-amzn-request-id'] ??\n headers['x-amz-request-id'],\n extendedRequestId: headers['x-amz-id-2'],\n cfId: headers['x-amz-cf-id'],\n };\n};\nconst isMetadataBearer = (response) => typeof response?.$metadata === 'object';\n\nexport { parseMetadata };\n//# sourceMappingURL=responseInfo.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst AmplifyUrl = URL;\nconst AmplifyUrlSearchParams = URLSearchParams;\n\nexport { AmplifyUrl, AmplifyUrlSearchParams };\n//# sourceMappingURL=index.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst composeServiceApi = (transferHandler, serializer, deserializer, defaultConfig) => {\n return async (config, input) => {\n const resolvedConfig = {\n ...defaultConfig,\n ...config,\n };\n // We may want to allow different endpoints from given config(other than region) and input.\n // Currently S3 supports additional `useAccelerateEndpoint` option to use accelerate endpoint.\n const endpoint = await resolvedConfig.endpointResolver(resolvedConfig, input);\n // Unlike AWS SDK clients, a serializer should NOT populate the `host` or `content-length` headers.\n // Both of these headers are prohibited per Spec(https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name).\n // They will be populated automatically by browser, or node-fetch polyfill.\n const request = await serializer(input, endpoint);\n const response = await transferHandler(request, {\n ...resolvedConfig,\n });\n return deserializer(response);\n };\n};\n\nexport { composeServiceApi };\n//# sourceMappingURL=composeServiceApi.mjs.map\n","// generated by genversion\nconst version = '6.8.3-next-15.716cf28.0+716cf28';\n\nexport { version };\n//# sourceMappingURL=version.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst globalExists = () => {\n return typeof global !== 'undefined';\n};\nconst globalThisExists = () => {\n return typeof globalThis !== 'undefined';\n};\nconst windowExists = () => {\n return typeof window !== 'undefined';\n};\nconst documentExists = () => {\n return typeof document !== 'undefined';\n};\nconst processExists = () => {\n return typeof process !== 'undefined';\n};\nconst keyPrefixMatch = (object, prefix) => {\n return !!Object.keys(object).find(key => key.startsWith(prefix));\n};\n\nexport { documentExists, globalExists, globalThisExists, keyPrefixMatch, processExists, windowExists };\n//# sourceMappingURL=helpers.mjs.map\n","import { documentExists, processExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with react 18.2 - built using Vite\nfunction reactWebDetect() {\n const elementKeyPrefixedWithReact = (key) => {\n return key.startsWith('_react') || key.startsWith('__react');\n };\n const elementIsReactEnabled = (element) => {\n return Object.keys(element).find(elementKeyPrefixedWithReact);\n };\n const allElementsWithId = () => Array.from(document.querySelectorAll('[id]'));\n return documentExists() && allElementsWithId().some(elementIsReactEnabled);\n}\nfunction reactSSRDetect() {\n return (processExists() &&\n typeof process.env !== 'undefined' &&\n !!Object.keys(process.env).find(key => key.includes('react')));\n}\n// use the some\n\nexport { reactSSRDetect, reactWebDetect };\n//# sourceMappingURL=React.mjs.map\n","import { windowExists, keyPrefixMatch, globalExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with vue 3.3.2\nfunction vueWebDetect() {\n return windowExists() && keyPrefixMatch(window, '__VUE');\n}\nfunction vueSSRDetect() {\n return globalExists() && keyPrefixMatch(global, '__VUE');\n}\n\nexport { vueSSRDetect, vueWebDetect };\n//# sourceMappingURL=Vue.mjs.map\n","import { windowExists, keyPrefixMatch, processExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with svelte 3.59\nfunction svelteWebDetect() {\n return windowExists() && keyPrefixMatch(window, '__SVELTE');\n}\nfunction svelteSSRDetect() {\n return (processExists() &&\n typeof process.env !== 'undefined' &&\n !!Object.keys(process.env).find(key => key.includes('svelte')));\n}\n\nexport { svelteSSRDetect, svelteWebDetect };\n//# sourceMappingURL=Svelte.mjs.map\n","import { windowExists, globalExists, keyPrefixMatch } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with next 13.4 / react 18.2\nfunction nextWebDetect() {\n return (windowExists() &&\n window.next &&\n typeof window.next === 'object');\n}\nfunction nextSSRDetect() {\n return (globalExists() &&\n (keyPrefixMatch(global, '__next') || keyPrefixMatch(global, '__NEXT')));\n}\n\nexport { nextSSRDetect, nextWebDetect };\n//# sourceMappingURL=Next.mjs.map\n","import { windowExists, globalExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with nuxt 2.15 / vue 2.7\nfunction nuxtWebDetect() {\n return (windowExists() &&\n (window.__NUXT__ !== undefined ||\n window.$nuxt !== undefined));\n}\nfunction nuxtSSRDetect() {\n return (globalExists() && typeof global.__NUXT_PATHS__ !== 'undefined');\n}\n\nexport { nuxtSSRDetect, nuxtWebDetect };\n//# sourceMappingURL=Nuxt.mjs.map\n","import { documentExists, processExists, windowExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with @angular/core 16.0.0\nfunction angularWebDetect() {\n const angularVersionSetInDocument = Boolean(documentExists() && document.querySelector('[ng-version]'));\n const angularContentSetInWindow = Boolean(windowExists() && typeof window.ng !== 'undefined');\n return angularVersionSetInDocument || angularContentSetInWindow;\n}\nfunction angularSSRDetect() {\n return ((processExists() &&\n typeof process.env === 'object' &&\n process.env.npm_lifecycle_script?.startsWith('ng ')) ||\n false);\n}\n\nexport { angularSSRDetect, angularWebDetect };\n//# sourceMappingURL=Angular.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with react-native 0.17.7\nfunction reactNativeDetect() {\n return (typeof navigator !== 'undefined' &&\n typeof navigator.product !== 'undefined' &&\n navigator.product === 'ReactNative');\n}\n\nexport { reactNativeDetect };\n//# sourceMappingURL=ReactNative.mjs.map\n","import { globalExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with expo 48 / react-native 0.71.3\nfunction expoDetect() {\n return globalExists() && typeof global.expo !== 'undefined';\n}\n\nexport { expoDetect };\n//# sourceMappingURL=Expo.mjs.map\n","import { windowExists } from './helpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction webDetect() {\n return windowExists();\n}\n\nexport { webDetect };\n//# sourceMappingURL=Web.mjs.map\n","import { Framework } from '../types.mjs';\nimport { reactWebDetect, reactSSRDetect } from './React.mjs';\nimport { vueWebDetect, vueSSRDetect } from './Vue.mjs';\nimport { svelteWebDetect, svelteSSRDetect } from './Svelte.mjs';\nimport { nextWebDetect, nextSSRDetect } from './Next.mjs';\nimport { nuxtWebDetect, nuxtSSRDetect } from './Nuxt.mjs';\nimport { angularWebDetect, angularSSRDetect } from './Angular.mjs';\nimport { reactNativeDetect } from './ReactNative.mjs';\nimport { expoDetect } from './Expo.mjs';\nimport { webDetect } from './Web.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// These are in the order of detection where when both are detectable, the early Framework will be reported\nconst detectionMap = [\n // First, detect mobile\n { platform: Framework.Expo, detectionMethod: expoDetect },\n { platform: Framework.ReactNative, detectionMethod: reactNativeDetect },\n // Next, detect web frameworks\n { platform: Framework.NextJs, detectionMethod: nextWebDetect },\n { platform: Framework.Nuxt, detectionMethod: nuxtWebDetect },\n { platform: Framework.Angular, detectionMethod: angularWebDetect },\n { platform: Framework.React, detectionMethod: reactWebDetect },\n { platform: Framework.VueJs, detectionMethod: vueWebDetect },\n { platform: Framework.Svelte, detectionMethod: svelteWebDetect },\n { platform: Framework.WebUnknown, detectionMethod: webDetect },\n // Last, detect ssr frameworks\n { platform: Framework.NextJsSSR, detectionMethod: nextSSRDetect },\n { platform: Framework.NuxtSSR, detectionMethod: nuxtSSRDetect },\n { platform: Framework.ReactSSR, detectionMethod: reactSSRDetect },\n { platform: Framework.VueJsSSR, detectionMethod: vueSSRDetect },\n { platform: Framework.AngularSSR, detectionMethod: angularSSRDetect },\n { platform: Framework.SvelteSSR, detectionMethod: svelteSSRDetect },\n];\nfunction detect() {\n return (detectionMap.find(detectionEntry => detectionEntry.detectionMethod())\n ?.platform || Framework.ServerSideUnknown);\n}\n\nexport { detect };\n//# sourceMappingURL=index.mjs.map\n","import { Framework } from './types.mjs';\nimport { detect } from './detection/index.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// We want to cache detection since the framework won't change\nlet frameworkCache;\nconst frameworkChangeObservers = [];\n// Setup the detection reset tracking / timeout delays\nlet resetTriggered = false;\nconst SSR_RESET_TIMEOUT = 10; // ms\nconst WEB_RESET_TIMEOUT = 10; // ms\nconst PRIME_FRAMEWORK_DELAY = 1000; // ms\nconst detectFramework = () => {\n if (!frameworkCache) {\n frameworkCache = detect();\n if (resetTriggered) {\n // The final run of detectFramework:\n // Starting from this point, the `frameworkCache` becomes \"final\".\n // So we don't need to notify the observers again so the observer\n // can be removed after the final notice.\n while (frameworkChangeObservers.length) {\n frameworkChangeObservers.pop()?.();\n }\n }\n else {\n // The first run of detectFramework:\n // Every time we update the cache, call each observer function\n frameworkChangeObservers.forEach(fcn => {\n fcn();\n });\n }\n // Retry once for either Unknown type after a delay (explained below)\n resetTimeout(Framework.ServerSideUnknown, SSR_RESET_TIMEOUT);\n resetTimeout(Framework.WebUnknown, WEB_RESET_TIMEOUT);\n }\n return frameworkCache;\n};\n/**\n * @internal Setup observer callback that will be called everytime the framework changes\n */\nconst observeFrameworkChanges = (fcn) => {\n // When the `frameworkCache` won't be updated again, we ignore all incoming\n // observers.\n if (resetTriggered) {\n return;\n }\n frameworkChangeObservers.push(fcn);\n};\nfunction clearCache() {\n frameworkCache = undefined;\n}\n// For a framework type and a delay amount, setup the event to re-detect\n// During the runtime boot, it is possible that framework detection will\n// be triggered before the framework has made modifications to the\n// global/window/etc needed for detection. When no framework is detected\n// we will reset and try again to ensure we don't use a cached\n// non-framework detection result for all requests.\nfunction resetTimeout(framework, delay) {\n if (frameworkCache === framework && !resetTriggered) {\n setTimeout(() => {\n clearCache();\n resetTriggered = true;\n setTimeout(detectFramework, PRIME_FRAMEWORK_DELAY);\n }, delay);\n }\n}\n\nexport { clearCache, detectFramework, frameworkChangeObservers, observeFrameworkChanges };\n//# sourceMappingURL=detectFramework.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Maintains custom user-agent state set by external consumers.\nconst customUserAgentState = {};\n/**\n * Sets custom user agent state which will be appended to applicable requests. Returns a function that can be used to\n * clean up any custom state set with this API.\n *\n * @note\n * This API operates globally. Calling this API multiple times will result in the most recently set values for a\n * particular API being used.\n *\n * @note\n * This utility IS NOT compatible with SSR.\n *\n * @param input - SetCustomUserAgentInput that defines custom state to apply to the specified APIs.\n */\nconst setCustomUserAgent = (input) => {\n // Save custom user-agent state & increment reference counter\n // TODO Remove `any` when we upgrade to TypeScript 5.2, see: https://github.com/microsoft/TypeScript/issues/44373\n customUserAgentState[input.category] = input.apis.reduce((acc, api) => ({\n ...acc,\n [api]: {\n refCount: acc[api]?.refCount ? acc[api].refCount + 1 : 1,\n additionalDetails: input.additionalDetails,\n },\n }), customUserAgentState[input.category] ?? {});\n // Callback that cleans up state for APIs recorded by this call\n let cleanUpCallbackCalled = false;\n const cleanUpCallback = () => {\n // Only allow the cleanup callback to be called once\n if (cleanUpCallbackCalled) {\n return;\n }\n cleanUpCallbackCalled = true;\n input.apis.forEach(api => {\n const apiRefCount = customUserAgentState[input.category][api].refCount;\n if (apiRefCount > 1) {\n customUserAgentState[input.category][api].refCount = apiRefCount - 1;\n }\n else {\n delete customUserAgentState[input.category][api];\n // Clean up category if no more APIs set\n if (!Object.keys(customUserAgentState[input.category]).length) {\n delete customUserAgentState[input.category];\n }\n }\n });\n };\n return cleanUpCallback;\n};\nconst getCustomUserAgent = (category, api) => customUserAgentState[category]?.[api]?.additionalDetails;\n\nexport { getCustomUserAgent, setCustomUserAgent };\n//# sourceMappingURL=customUserAgent.mjs.map\n","import { Framework } from './types.mjs';\nimport { version } from './version.mjs';\nimport { detectFramework, observeFrameworkChanges } from './detectFramework.mjs';\nimport { getCustomUserAgent } from './customUserAgent.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst BASE_USER_AGENT = `aws-amplify`;\n/** Sanitize Amplify version string be removing special character + and character post the special character */\nconst sanitizeAmplifyVersion = (amplifyVersion) => amplifyVersion.replace(/\\+.*/, '');\nclass PlatformBuilder {\n constructor() {\n this.userAgent = `${BASE_USER_AGENT}/${sanitizeAmplifyVersion(version)}`;\n }\n get framework() {\n return detectFramework();\n }\n get isReactNative() {\n return (this.framework === Framework.ReactNative ||\n this.framework === Framework.Expo);\n }\n observeFrameworkChanges(fcn) {\n observeFrameworkChanges(fcn);\n }\n}\nconst Platform = new PlatformBuilder();\nconst getAmplifyUserAgentObject = ({ category, action, } = {}) => {\n const userAgent = [\n [BASE_USER_AGENT, sanitizeAmplifyVersion(version)],\n ];\n if (category) {\n userAgent.push([category, action]);\n }\n userAgent.push(['framework', detectFramework()]);\n if (category && action) {\n const customState = getCustomUserAgent(category, action);\n if (customState) {\n customState.forEach(state => {\n userAgent.push(state);\n });\n }\n }\n return userAgent;\n};\nconst getAmplifyUserAgent = (customUserAgentDetails) => {\n const userAgent = getAmplifyUserAgentObject(customUserAgentDetails);\n const userAgentString = userAgent\n .map(([agentKey, agentValue]) => agentKey && agentValue ? `${agentKey}/${agentValue}` : agentKey)\n .join(' ');\n return userAgentString;\n};\n\nexport { Platform, getAmplifyUserAgent, getAmplifyUserAgentObject, sanitizeAmplifyVersion };\n//# sourceMappingURL=index.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Default partition for AWS services. This is used when the region is not provided or the region is not recognized.\n *\n * @internal\n */\nconst defaultPartition = {\n id: 'aws',\n outputs: {\n dnsSuffix: 'amazonaws.com',\n },\n regionRegex: '^(us|eu|ap|sa|ca|me|af)\\\\-\\\\w+\\\\-\\\\d+$',\n regions: ['aws-global'],\n};\n/**\n * This data is adapted from the partition file from AWS SDK shared utilities but remove some contents for bundle size\n * concern. Information removed are `dualStackDnsSuffix`, `supportDualStack`, `supportFIPS`, restricted partitions, and\n * list of regions for each partition other than global regions.\n *\n * * Ref: https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints\n * * Ref: https://github.com/aws/aws-sdk-js-v3/blob/0201baef03c2379f1f6f7150b9d401d4b230d488/packages/util-endpoints/src/lib/aws/partitions.json#L1\n *\n * @internal\n */\nconst partitionsInfo = {\n partitions: [\n defaultPartition,\n {\n id: 'aws-cn',\n outputs: {\n dnsSuffix: 'amazonaws.com.cn',\n },\n regionRegex: '^cn\\\\-\\\\w+\\\\-\\\\d+$',\n regions: ['aws-cn-global'],\n },\n ],\n};\n\nexport { defaultPartition, partitionsInfo };\n//# sourceMappingURL=partitions.mjs.map\n","import { defaultPartition, partitionsInfo } from './partitions.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Get the AWS Services endpoint URL's DNS suffix for a given region. A typical AWS regional service endpoint URL will\n * follow this pattern: {endpointPrefix}.{region}.{dnsSuffix}. For example, the endpoint URL for Cognito Identity in\n * us-east-1 will be cognito-identity.us-east-1.amazonaws.com. Here the DnsSuffix is `amazonaws.com`.\n *\n * @param region\n * @returns The DNS suffix\n *\n * @internal\n */\nconst getDnsSuffix = (region) => {\n const { partitions } = partitionsInfo;\n for (const { regions, outputs, regionRegex } of partitions) {\n const regex = new RegExp(regionRegex);\n if (regions.includes(region) || regex.test(region)) {\n return outputs.dnsSuffix;\n }\n }\n return defaultPartition.outputs.dnsSuffix;\n};\n\nexport { getDnsSuffix };\n//# sourceMappingURL=getDnsSuffix.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar AmplifyErrorCode;\n(function (AmplifyErrorCode) {\n AmplifyErrorCode[\"NoEndpointId\"] = \"NoEndpointId\";\n AmplifyErrorCode[\"PlatformNotSupported\"] = \"PlatformNotSupported\";\n AmplifyErrorCode[\"Unknown\"] = \"Unknown\";\n AmplifyErrorCode[\"NetworkError\"] = \"NetworkError\";\n})(AmplifyErrorCode || (AmplifyErrorCode = {}));\n\nexport { AmplifyErrorCode };\n//# sourceMappingURL=errors.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// via https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L8\nconst CLOCK_SKEW_ERROR_CODES = [\n 'AuthFailure',\n 'InvalidSignatureException',\n 'RequestExpired',\n 'RequestInTheFuture',\n 'RequestTimeTooSkewed',\n 'SignatureDoesNotMatch',\n 'BadRequestException', // API Gateway\n];\n/**\n * Given an error code, returns true if it is related to a clock skew error.\n *\n * @param errorCode String representation of some error.\n * @returns True if given error is present in `CLOCK_SKEW_ERROR_CODES`, false otherwise.\n *\n * @internal\n */\nconst isClockSkewError = (errorCode) => !!errorCode && CLOCK_SKEW_ERROR_CODES.includes(errorCode);\n\nexport { isClockSkewError };\n//# sourceMappingURL=isClockSkewError.mjs.map\n","import { AmplifyErrorCode } from '../../../types/errors.mjs';\nimport { isClockSkewError } from './isClockSkewError.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Get retry decider function\n * @param errorParser Function to load JavaScript error from HTTP response\n */\nconst getRetryDecider = (errorParser) => async (response, error) => {\n const parsedError = error ??\n (await errorParser(response)) ??\n undefined;\n const errorCode = parsedError?.code || parsedError?.name;\n const statusCode = response?.statusCode;\n return (isConnectionError(error) ||\n isThrottlingError(statusCode, errorCode) ||\n isClockSkewError(errorCode) ||\n isServerSideError(statusCode, errorCode));\n};\n// reference: https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L22-L37\nconst THROTTLING_ERROR_CODES = [\n 'BandwidthLimitExceeded',\n 'EC2ThrottledException',\n 'LimitExceededException',\n 'PriorRequestNotComplete',\n 'ProvisionedThroughputExceededException',\n 'RequestLimitExceeded',\n 'RequestThrottled',\n 'RequestThrottledException',\n 'SlowDown',\n 'ThrottledException',\n 'Throttling',\n 'ThrottlingException',\n 'TooManyRequestsException',\n];\nconst TIMEOUT_ERROR_CODES = [\n 'TimeoutError',\n 'RequestTimeout',\n 'RequestTimeoutException',\n];\nconst isThrottlingError = (statusCode, errorCode) => statusCode === 429 ||\n (!!errorCode && THROTTLING_ERROR_CODES.includes(errorCode));\nconst isConnectionError = (error) => [\n AmplifyErrorCode.NetworkError,\n // TODO(vNext): unify the error code `ERR_NETWORK` used by the Storage XHR handler\n 'ERR_NETWORK',\n].includes(error?.name);\nconst isServerSideError = (statusCode, errorCode) => (!!statusCode && [500, 502, 503, 504].includes(statusCode)) ||\n (!!errorCode && TIMEOUT_ERROR_CODES.includes(errorCode));\n\nexport { getRetryDecider };\n//# sourceMappingURL=defaultRetryDecider.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst MAX_DELAY_MS = 5 * 60 * 1000;\n\nexport { MAX_DELAY_MS };\n//# sourceMappingURL=constants.mjs.map\n","import { MAX_DELAY_MS } from './constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @private\n * Internal use of Amplify only\n */\nfunction jitteredBackoff(maxDelayMs = MAX_DELAY_MS) {\n const BASE_TIME_MS = 100;\n const JITTER_FACTOR = 100;\n return attempt => {\n const delay = 2 ** attempt * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\n\nexport { jitteredBackoff };\n//# sourceMappingURL=jitteredBackoff.mjs.map\n","import '../../../utils/getClientInfo/getClientInfo.mjs';\nimport { jitteredBackoff as jitteredBackoff$1 } from '../../../utils/retry/jitteredBackoff.mjs';\nimport '../../../utils/retry/retry.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// TODO: [v6] The separate retry utility is used by Data packages now and will replaced by retry middleware.\nconst DEFAULT_MAX_DELAY_MS = 5 * 60 * 1000;\nconst jitteredBackoff = attempt => {\n const delayFunction = jitteredBackoff$1(DEFAULT_MAX_DELAY_MS);\n const delay = delayFunction(attempt);\n // The delayFunction returns false when the delay is greater than the max delay(5 mins).\n // In this case, the retry middleware will delay 5 mins instead, as a ceiling of the delay.\n return delay === false ? DEFAULT_MAX_DELAY_MS : delay;\n};\n\nexport { jitteredBackoff };\n//# sourceMappingURL=jitteredBackoff.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Drop-in replacement for fast-xml-parser's XmlParser class used in the AWS SDK S3 client XML deserializer. This\n * implementation is not tested against the full xml conformance test suite. It is only tested against the XML responses\n * from S3. This implementation requires the `DOMParser` class in the runtime.\n */\nconst parser = {\n parse: (xmlStr) => {\n const domParser = new DOMParser();\n const xml = domParser.parseFromString(xmlStr, 'text/xml');\n const parsedObj = parseXmlNode(xml);\n const rootKey = Object.keys(parsedObj)[0];\n return parsedObj[rootKey];\n },\n};\nconst parseXmlNode = (node) => {\n if (isDocumentNode(node)) {\n return {\n [node.documentElement.nodeName]: parseXmlNode(node.documentElement),\n };\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node.nodeValue?.trim();\n }\n if (isElementNode(node)) {\n // Node like foo will be converted to { Location: 'foo' }\n // instead of { Location: { '#text': 'foo' } }.\n if (isTextOnlyElementNode(node)) {\n return node.childNodes[0].nodeValue;\n }\n const nodeValue = {};\n // convert attributes\n for (const attr of node.attributes) {\n if (!isNamespaceAttributeName(attr.nodeName)) {\n nodeValue[attr.nodeName] = attr.nodeValue;\n }\n }\n // convert child nodes\n if (node.children.length > 0) {\n for (const child of node.children) {\n const childValue = parseXmlNode(child);\n if (childValue === undefined) {\n continue;\n }\n const childName = child.nodeName;\n if (nodeValue[childName] === undefined) {\n nodeValue[childName] = childValue;\n }\n else if (Array.isArray(nodeValue[childName])) {\n nodeValue[childName].push(childValue);\n }\n else {\n nodeValue[childName] = [nodeValue[childName], childValue];\n }\n }\n }\n // Return empty element node as empty string instead of `{}`, which is the default behavior of fast-xml-parser.\n return Object.keys(nodeValue).length === 0 ? '' : nodeValue;\n }\n};\nconst isElementNode = (node) => node.nodeType === Node.ELEMENT_NODE;\nconst isDocumentNode = (node) => node.nodeType === Node.DOCUMENT_NODE;\nconst isTextOnlyElementNode = (node) => hasOnlyNamespaceAttributes(node) &&\n node.children.length === 0 &&\n node.firstChild?.nodeType === Node.TEXT_NODE;\nconst hasOnlyNamespaceAttributes = (node) => {\n for (const attr of node.attributes) {\n if (!isNamespaceAttributeName(attr.nodeName)) {\n return false;\n }\n }\n return true;\n};\nconst isNamespaceAttributeName = (name) => name === 'xmlns' || name.startsWith('xmlns:');\n\nexport { parser };\n//# sourceMappingURL=dom.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport '../runtime/s3TransferHandler/fetch.mjs';\nimport { parser } from '../runtime/xmlParser/pureJs.mjs';\nimport '../runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst parseXmlError = async (response) => {\n if (!response || response.statusCode < 300) {\n return;\n }\n const { statusCode } = response;\n const body = await parseXmlBody(response);\n const code = body?.Code\n ? body.Code\n : statusCode === 404\n ? 'NotFound'\n : statusCode.toString();\n const message = body?.message ?? body?.Message ?? code;\n const error = new Error(message);\n return Object.assign(error, {\n name: code,\n $metadata: parseMetadata(response),\n });\n};\nconst parseXmlBody = async (response) => {\n if (!response.body) {\n // S3 can return 200 without a body indicating failure.\n throw new Error('S3 aborted request.');\n }\n const data = await response.body.text();\n if (data?.length > 0) {\n try {\n return parser.parse(data);\n }\n catch (error) {\n throw new Error(`Failed to parse XML response: ${error}`);\n }\n }\n return {};\n};\n\nexport { parseXmlBody, parseXmlError };\n//# sourceMappingURL=parsePayload.mjs.map\n","import { getAmplifyUserAgent, AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { getRetryDecider, jitteredBackoff, getDnsSuffix } from '@aws-amplify/core/internals/aws-client-utils';\nimport { parseXmlError } from './utils/parsePayload.mjs';\nimport './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nconst SERVICE_NAME = 's3';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region, and input parameters.\n */\nconst endpointResolver = (options, apiInput) => {\n const { region, useAccelerateEndpoint, customEndpoint, forcePathStyle } = options;\n let endpoint;\n // 1. get base endpoint\n if (customEndpoint) {\n endpoint = new AmplifyUrl(customEndpoint);\n }\n else if (useAccelerateEndpoint) {\n if (forcePathStyle) {\n throw new Error('Path style URLs are not supported with S3 Transfer Acceleration.');\n }\n endpoint = new AmplifyUrl(`https://s3-accelerate.${getDnsSuffix(region)}`);\n }\n else {\n endpoint = new AmplifyUrl(`https://s3.${region}.${getDnsSuffix(region)}`);\n }\n // 2. inject bucket name\n if (apiInput?.Bucket) {\n if (!isDnsCompatibleBucketName(apiInput.Bucket)) {\n throw new Error(`Invalid bucket name: \"${apiInput.Bucket}\".`);\n }\n if (forcePathStyle || apiInput.Bucket.includes('.')) {\n endpoint.pathname = `/${apiInput.Bucket}`;\n }\n else {\n endpoint.host = `${apiInput.Bucket}.${endpoint.host}`;\n }\n }\n return { url: endpoint };\n};\n/**\n * Determines whether a given string is DNS compliant per the rules outlined by\n * S3. Length, capitaization, and leading dot restrictions are enforced by the\n * DOMAIN_PATTERN regular expression.\n * @internal\n *\n * @see https://github.com/aws/aws-sdk-js-v3/blob/f2da6182298d4d6b02e84fb723492c07c27469a8/packages/middleware-bucket-endpoint/src/bucketHostnameUtils.ts#L39-L48\n * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html\n */\nconst isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) &&\n !IP_ADDRESS_PATTERN.test(bucketName) &&\n !DOTS_PATTERN.test(bucketName);\n/**\n * @internal\n */\nconst defaultConfig = {\n service: SERVICE_NAME,\n endpointResolver,\n retryDecider: getRetryDecider(parseXmlError),\n computeDelay: jitteredBackoff,\n userAgentValue: getAmplifyUserAgent(),\n useAccelerateEndpoint: false,\n uriEscapePath: false, // Required by S3. See https://github.com/aws/aws-sdk-js-v3/blob/9ba012dfa3a3429aa2db0f90b3b0b3a7a31f9bc3/packages/signature-v4/src/SignatureV4.ts#L76-L83\n};\n\nexport { SERVICE_NAME, defaultConfig, isDnsCompatibleBucketName };\n//# sourceMappingURL=base.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Middleware injects user agent string to specified header(default to 'x-amz-user-agent'),\n * if the header is not set already.\n *\n * TODO: incorporate new user agent design\n */\nconst userAgentMiddlewareFactory = ({ userAgentHeader = 'x-amz-user-agent', userAgentValue = '', }) => next => {\n return async function userAgentMiddleware(request) {\n if (userAgentValue.trim().length === 0) {\n const result = await next(request);\n return result;\n }\n else {\n const headerName = userAgentHeader.toLowerCase();\n request.headers[headerName] = request.headers[headerName]\n ? `${request.headers[headerName]} ${userAgentValue}`\n : userAgentValue;\n const response = await next(request);\n return response;\n }\n };\n};\n\nexport { userAgentMiddlewareFactory };\n//# sourceMappingURL=middleware.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst DEFAULT_RETRY_ATTEMPTS = 3;\n/**\n * Retry middleware\n */\nconst retryMiddlewareFactory = ({ maxAttempts = DEFAULT_RETRY_ATTEMPTS, retryDecider, computeDelay, abortSignal, }) => {\n if (maxAttempts < 1) {\n throw new Error('maxAttempts must be greater than 0');\n }\n return (next, context) => async function retryMiddleware(request) {\n let error;\n let attemptsCount = context.attemptsCount ?? 0;\n let response;\n // When retry is not needed or max attempts is reached, either error or response will be set. This function handles either cases.\n const handleTerminalErrorOrResponse = () => {\n if (response) {\n addOrIncrementMetadataAttempts(response, attemptsCount);\n return response;\n }\n else {\n addOrIncrementMetadataAttempts(error, attemptsCount);\n throw error;\n }\n };\n while (!abortSignal?.aborted && attemptsCount < maxAttempts) {\n try {\n response = await next(request);\n error = undefined;\n }\n catch (e) {\n error = e;\n response = undefined;\n }\n // context.attemptsCount may be updated after calling next handler which may retry the request by itself.\n attemptsCount =\n (context.attemptsCount ?? 0) > attemptsCount\n ? (context.attemptsCount ?? 0)\n : attemptsCount + 1;\n context.attemptsCount = attemptsCount;\n if (await retryDecider(response, error)) {\n if (!abortSignal?.aborted && attemptsCount < maxAttempts) {\n // prevent sleep for last attempt or cancelled request;\n const delay = computeDelay(attemptsCount);\n await cancellableSleep(delay, abortSignal);\n }\n continue;\n }\n else {\n return handleTerminalErrorOrResponse();\n }\n }\n if (abortSignal?.aborted) {\n throw new Error('Request aborted.');\n }\n else {\n return handleTerminalErrorOrResponse();\n }\n };\n};\nconst cancellableSleep = (timeoutMs, abortSignal) => {\n if (abortSignal?.aborted) {\n return Promise.resolve();\n }\n let timeoutId;\n let sleepPromiseResolveFn;\n const sleepPromise = new Promise(resolve => {\n sleepPromiseResolveFn = resolve;\n timeoutId = setTimeout(resolve, timeoutMs);\n });\n abortSignal?.addEventListener('abort', function cancelSleep(_) {\n clearTimeout(timeoutId);\n abortSignal?.removeEventListener('abort', cancelSleep);\n sleepPromiseResolveFn();\n });\n return sleepPromise;\n};\nconst addOrIncrementMetadataAttempts = (nextHandlerOutput, attempts) => {\n if (Object.prototype.toString.call(nextHandlerOutput) !== '[object Object]') {\n return;\n }\n nextHandlerOutput.$metadata = {\n ...(nextHandlerOutput.$metadata ?? {}),\n attempts,\n };\n};\n\nexport { retryMiddlewareFactory };\n//# sourceMappingURL=middleware.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns signed headers.\n *\n * @param headers `headers` from the request.\n * @returns List of headers included in canonical headers, separated by semicolons (;). This indicates which headers\n * are part of the signing process. Header names must use lowercase characters and must appear in alphabetical order.\n *\n * @internal\n */\nconst getSignedHeaders = (headers) => Object.keys(headers)\n .map(key => key.toLowerCase())\n .sort()\n .join(';');\n\nexport { getSignedHeaders };\n//# sourceMappingURL=getSignedHeaders.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// query params\nconst ALGORITHM_QUERY_PARAM = 'X-Amz-Algorithm';\nconst AMZ_DATE_QUERY_PARAM = 'X-Amz-Date';\nconst CREDENTIAL_QUERY_PARAM = 'X-Amz-Credential';\nconst EXPIRES_QUERY_PARAM = 'X-Amz-Expires';\nconst REGION_SET_PARAM = 'X-Amz-Region-Set';\nconst SIGNATURE_QUERY_PARAM = 'X-Amz-Signature';\nconst SIGNED_HEADERS_QUERY_PARAM = 'X-Amz-SignedHeaders';\nconst TOKEN_QUERY_PARAM = 'X-Amz-Security-Token';\n// headers\nconst AUTH_HEADER = 'authorization';\nconst HOST_HEADER = 'host';\nconst AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nconst TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\n// identifiers\nconst KEY_TYPE_IDENTIFIER = 'aws4_request';\nconst SHA256_ALGORITHM_IDENTIFIER = 'AWS4-HMAC-SHA256';\nconst SIGNATURE_IDENTIFIER = 'AWS4';\n// preset values\nconst EMPTY_HASH = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';\nconst UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD';\n\nexport { ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EMPTY_HASH, EXPIRES_QUERY_PARAM, HOST_HEADER, KEY_TYPE_IDENTIFIER, REGION_SET_PARAM, SHA256_ALGORITHM_IDENTIFIER, SIGNATURE_IDENTIFIER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, UNSIGNED_PAYLOAD };\n//# sourceMappingURL=constants.mjs.map\n","import { KEY_TYPE_IDENTIFIER } from '../constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns the credential scope which restricts the resulting signature to the specified region and service.\n *\n * @param date Current date in the format 'YYYYMMDD'.\n * @param region AWS region in which the service resides.\n * @param service Service to which the signed request is being sent.\n *\n * @returns A string representing the credential scope with format 'YYYYMMDD/region/service/aws4_request'.\n *\n * @internal\n */\nconst getCredentialScope = (date, region, service) => `${date}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\n\nexport { getCredentialScope };\n//# sourceMappingURL=getCredentialScope.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns expected date strings to be used in signing.\n *\n * @param date JavaScript `Date` object.\n * @returns `FormattedDates` object containing the following:\n * - longDate: A date string in 'YYYYMMDDThhmmssZ' format\n * - shortDate: A date string in 'YYYYMMDD' format\n *\n * @internal\n */\nconst getFormattedDates = (date) => {\n const longDate = date.toISOString().replace(/[:-]|\\.\\d{3}/g, '');\n return {\n longDate,\n shortDate: longDate.slice(0, 8),\n };\n};\n\nexport { getFormattedDates };\n//# sourceMappingURL=getFormattedDates.mjs.map\n","import { getCredentialScope } from './getCredentialScope.mjs';\nimport { getFormattedDates } from './getFormattedDates.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Extracts common values used for signing both requests and urls.\n *\n * @param options `SignRequestOptions` object containing values used to construct the signature.\n * @returns Common `SigningValues` used for signing.\n *\n * @internal\n */\nconst getSigningValues = ({ credentials, signingDate = new Date(), signingRegion, signingService, uriEscapePath = true, }) => {\n // get properties from credentials\n const { accessKeyId, secretAccessKey, sessionToken } = credentials;\n // get formatted dates for signing\n const { longDate, shortDate } = getFormattedDates(signingDate);\n // copy header and set signing properties\n const credentialScope = getCredentialScope(shortDate, signingRegion, signingService);\n return {\n accessKeyId,\n credentialScope,\n longDate,\n secretAccessKey,\n sessionToken,\n shortDate,\n signingRegion,\n signingService,\n uriEscapePath,\n };\n};\n\nexport { getSigningValues };\n//# sourceMappingURL=getSigningValues.mjs.map\n","import { Sha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@smithy/util-hex-encoding';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// TODO: V6 update to different crypto dependency?\n/**\n * Returns the hashed data a `Uint8Array`.\n *\n * @param key `SourceData` to be used as hashing key.\n * @param data Hashable `SourceData`.\n * @returns `Uint8Array` created from the data as input to a hash function.\n */\nconst getHashedData = (key, data) => {\n const sha256 = new Sha256(key ?? undefined);\n sha256.update(data);\n // TODO: V6 flip to async digest\n const hashedData = sha256.digestSync();\n return hashedData;\n};\n/**\n * Returns the hashed data as a hex string.\n *\n * @param key `SourceData` to be used as hashing key.\n * @param data Hashable `SourceData`.\n * @returns String using lowercase hexadecimal characters created from the data as input to a hash function.\n *\n * @internal\n */\nconst getHashedDataAsHex = (key, data) => {\n const hashedData = getHashedData(key, data);\n return toHex(hashedData);\n};\n\nexport { getHashedData, getHashedDataAsHex };\n//# sourceMappingURL=dataHashHelpers.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns canonical headers.\n *\n * @param headers Headers from the request.\n * @returns Request headers that will be signed, and their values, separated by newline characters. Header names must\n * use lowercase characters, must appear in alphabetical order, and must be followed by a colon (:). For the values,\n * trim any leading or trailing spaces, convert sequential spaces to a single space, and separate the values\n * for a multi-value header using commas.\n *\n * @internal\n */\nconst getCanonicalHeaders = (headers) => Object.entries(headers)\n .map(([key, value]) => ({\n key: key.toLowerCase(),\n value: value?.trim().replace(/\\s+/g, ' ') ?? '',\n}))\n .sort((a, b) => (a.key < b.key ? -1 : 1))\n .map(entry => `${entry.key}:${entry.value}\\n`)\n .join('');\n\nexport { getCanonicalHeaders };\n//# sourceMappingURL=getCanonicalHeaders.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a canonical query string.\n *\n * @param searchParams `searchParams` from the request url.\n * @returns URL-encoded query string parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there are empty parameters, append the equals\n * sign to the parameter name before encoding. After encoding, sort the parameters alphabetically by key name. If there\n * is no query string, use an empty string (\"\").\n *\n * @internal\n */\nconst getCanonicalQueryString = (searchParams) => Array.from(searchParams)\n .sort(([keyA, valA], [keyB, valB]) => {\n if (keyA === keyB) {\n return valA < valB ? -1 : 1;\n }\n return keyA < keyB ? -1 : 1;\n})\n .map(([key, val]) => `${escapeUri(key)}=${escapeUri(val)}`)\n .join('&');\nconst escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n\nexport { getCanonicalQueryString };\n//# sourceMappingURL=getCanonicalQueryString.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a canonical uri.\n *\n * @param pathname `pathname` from request url.\n * @param uriEscapePath Whether to uri encode the path as part of canonical uri. It's used for S3 only where the\n * pathname is already uri encoded, and the signing process is not expected to uri encode it again. Defaults to true.\n * @returns URI-encoded version of the absolute path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path is empty, a forward slash character (/).\n *\n * @internal\n */\nconst getCanonicalUri = (pathname, uriEscapePath = true) => pathname\n ? uriEscapePath\n ? encodeURIComponent(pathname).replace(/%2F/g, '/')\n : pathname\n : '/';\n\nexport { getCanonicalUri };\n//# sourceMappingURL=getCanonicalUri.mjs.map\n","import { EMPTY_HASH, UNSIGNED_PAYLOAD } from '../constants.mjs';\nimport { getHashedDataAsHex } from './dataHashHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns the hashed payload.\n *\n * @param body `body` (payload) from the request.\n * @returns String created using the payload in the body of the HTTP request as input to a hash function. This string\n * uses lowercase hexadecimal characters. If the payload is empty, return precalculated result of an empty hash.\n *\n * @internal\n */\nconst getHashedPayload = (body) => {\n // return precalculated empty hash if body is undefined or null\n if (body == null) {\n return EMPTY_HASH;\n }\n if (isSourceData(body)) {\n const hashedData = getHashedDataAsHex(null, body);\n return hashedData;\n }\n // Defined body is not signable. Return unsigned payload which may or may not be accepted by the service.\n return UNSIGNED_PAYLOAD;\n};\nconst isSourceData = (body) => typeof body === 'string' || ArrayBuffer.isView(body) || isArrayBuffer(body);\nconst isArrayBuffer = (arg) => (typeof ArrayBuffer === 'function' && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === '[object ArrayBuffer]';\n\nexport { getHashedPayload };\n//# sourceMappingURL=getHashedPayload.mjs.map\n","import { getCanonicalHeaders } from './getCanonicalHeaders.mjs';\nimport { getCanonicalQueryString } from './getCanonicalQueryString.mjs';\nimport { getCanonicalUri } from './getCanonicalUri.mjs';\nimport { getHashedPayload } from './getHashedPayload.mjs';\nimport { getSignedHeaders } from './getSignedHeaders.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a canonical request.\n *\n * @param request `HttpRequest` from which to create the canonical request from.\n * @param uriEscapePath Whether to uri encode the path as part of canonical uri. It's used for S3 only where the\n * pathname is already uri encoded, and the signing process is not expected to uri encode it again. Defaults to true.\n * @returns String created by by concatenating the following strings, separated by newline characters:\n * - HTTPMethod\n * - CanonicalUri\n * - CanonicalQueryString\n * - CanonicalHeaders\n * - SignedHeaders\n * - HashedPayload\n *\n * @internal\n */\nconst getCanonicalRequest = ({ body, headers, method, url }, uriEscapePath = true) => [\n method,\n getCanonicalUri(url.pathname, uriEscapePath),\n getCanonicalQueryString(url.searchParams),\n getCanonicalHeaders(headers),\n getSignedHeaders(headers),\n getHashedPayload(body),\n].join('\\n');\n\nexport { getCanonicalRequest };\n//# sourceMappingURL=getCanonicalRequest.mjs.map\n","import { KEY_TYPE_IDENTIFIER, SIGNATURE_IDENTIFIER } from '../constants.mjs';\nimport { getHashedData } from './dataHashHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a signing key to be used for signing requests.\n *\n * @param secretAccessKey AWS secret access key from credentials.\n * @param date Current date in the format 'YYYYMMDD'.\n * @param region AWS region in which the service resides.\n * @param service Service to which the signed request is being sent.\n *\n * @returns `Uint8Array` calculated from its composite parts.\n *\n * @internal\n */\nconst getSigningKey = (secretAccessKey, date, region, service) => {\n const key = `${SIGNATURE_IDENTIFIER}${secretAccessKey}`;\n const dateKey = getHashedData(key, date);\n const regionKey = getHashedData(dateKey, region);\n const serviceKey = getHashedData(regionKey, service);\n const signingKey = getHashedData(serviceKey, KEY_TYPE_IDENTIFIER);\n return signingKey;\n};\n\nexport { getSigningKey };\n//# sourceMappingURL=getSigningKey.mjs.map\n","import { SHA256_ALGORITHM_IDENTIFIER } from '../constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a string to be signed.\n *\n * @param date Current date in the format 'YYYYMMDDThhmmssZ'.\n * @param credentialScope String representing the credential scope with format 'YYYYMMDD/region/service/aws4_request'.\n * @param hashedRequest Hashed canonical request.\n *\n * @returns A string created by by concatenating the following strings, separated by newline characters:\n * - Algorithm\n * - RequestDateTime\n * - CredentialScope\n * - HashedCanonicalRequest\n *\n * @internal\n */\nconst getStringToSign = (date, credentialScope, hashedRequest) => [SHA256_ALGORITHM_IDENTIFIER, date, credentialScope, hashedRequest].join('\\n');\n\nexport { getStringToSign };\n//# sourceMappingURL=getStringToSign.mjs.map\n","import { getHashedDataAsHex } from './dataHashHelpers.mjs';\nimport { getCanonicalRequest } from './getCanonicalRequest.mjs';\nimport { getSigningKey } from './getSigningKey.mjs';\nimport { getStringToSign } from './getStringToSign.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Calculates and returns an AWS API Signature.\n * https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n *\n * @param request `HttpRequest` to be signed.\n * @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.\n * @returns AWS API Signature to sign a request or url with.\n *\n * @internal\n */\nconst getSignature = (request, { credentialScope, longDate, secretAccessKey, shortDate, signingRegion, signingService, uriEscapePath, }) => {\n // step 1: create a canonical request\n const canonicalRequest = getCanonicalRequest(request, uriEscapePath);\n // step 2: create a hash of the canonical request\n const hashedRequest = getHashedDataAsHex(null, canonicalRequest);\n // step 3: create a string to sign\n const stringToSign = getStringToSign(longDate, credentialScope, hashedRequest);\n // step 4: calculate the signature\n const signature = getHashedDataAsHex(getSigningKey(secretAccessKey, shortDate, signingRegion, signingService), stringToSign);\n return signature;\n};\n\nexport { getSignature };\n//# sourceMappingURL=getSignature.mjs.map\n","import { getSignedHeaders } from './utils/getSignedHeaders.mjs';\nimport { getSigningValues } from './utils/getSigningValues.mjs';\nimport { HOST_HEADER, AMZ_DATE_HEADER, TOKEN_HEADER, AUTH_HEADER, SHA256_ALGORITHM_IDENTIFIER } from './constants.mjs';\nimport { getSignature } from './utils/getSignature.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Given a `HttpRequest`, returns a Signature Version 4 signed `HttpRequest`.\n *\n * @param request `HttpRequest` to be signed.\n * @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.\n * @returns A `HttpRequest` with authentication headers which can grant temporary access to AWS resources.\n */\nconst signRequest = (request, options) => {\n const signingValues = getSigningValues(options);\n const { accessKeyId, credentialScope, longDate, sessionToken } = signingValues;\n // create the request to sign\n const headers = { ...request.headers };\n headers[HOST_HEADER] = request.url.host;\n headers[AMZ_DATE_HEADER] = longDate;\n if (sessionToken) {\n headers[TOKEN_HEADER] = sessionToken;\n }\n const requestToSign = { ...request, headers };\n // calculate and add the signature to the request\n const signature = getSignature(requestToSign, signingValues);\n const credentialEntry = `Credential=${accessKeyId}/${credentialScope}`;\n const signedHeadersEntry = `SignedHeaders=${getSignedHeaders(headers)}`;\n const signatureEntry = `Signature=${signature}`;\n headers[AUTH_HEADER] =\n `${SHA256_ALGORITHM_IDENTIFIER} ${credentialEntry}, ${signedHeadersEntry}, ${signatureEntry}`;\n return requestToSign;\n};\n\nexport { signRequest };\n//# sourceMappingURL=signRequest.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a `Date` that is corrected for clock skew.\n *\n * @param systemClockOffset The offset of the system clock in milliseconds.\n *\n * @returns `Date` representing the current time adjusted by the system clock offset.\n *\n * @internal\n */\nconst getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset);\n\nexport { getSkewCorrectedDate };\n//# sourceMappingURL=getSkewCorrectedDate.mjs.map\n","import { getSkewCorrectedDate } from './getSkewCorrectedDate.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// 5 mins in milliseconds. Ref: https://github.com/aws/aws-sdk-js-v3/blob/6c0f44fab30a1bb2134af47362a31332abc3666b/packages/middleware-signing/src/utils/isClockSkewed.ts#L10\nconst SKEW_WINDOW = 5 * 60 * 1000;\n/**\n * Checks if the provided date is within the skew window of 5 minutes.\n *\n * @param clockTimeInMilliseconds Time to check for skew in milliseconds.\n * @param clockOffsetInMilliseconds Offset to check clock against in milliseconds.\n *\n * @returns True if skewed. False otherwise.\n *\n * @internal\n */\nconst isClockSkewed = (clockTimeInMilliseconds, clockOffsetInMilliseconds) => Math.abs(getSkewCorrectedDate(clockOffsetInMilliseconds).getTime() -\n clockTimeInMilliseconds) >= SKEW_WINDOW;\n\nexport { isClockSkewed };\n//# sourceMappingURL=isClockSkewed.mjs.map\n","import { isClockSkewed } from './isClockSkewed.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns the difference between clock time and the current system time if clock is skewed.\n *\n * @param clockTimeInMilliseconds Clock time in milliseconds.\n * @param currentSystemClockOffset Current system clock offset in milliseconds.\n *\n * @internal\n */\nconst getUpdatedSystemClockOffset = (clockTimeInMilliseconds, currentSystemClockOffset) => {\n if (isClockSkewed(clockTimeInMilliseconds, currentSystemClockOffset)) {\n return clockTimeInMilliseconds - Date.now();\n }\n return currentSystemClockOffset;\n};\n\nexport { getUpdatedSystemClockOffset };\n//# sourceMappingURL=getUpdatedSystemClockOffset.mjs.map\n","import { signRequest } from './signer/signatureV4/signRequest.mjs';\nimport '@aws-crypto/sha256-js';\nimport '@smithy/util-hex-encoding';\nimport { getSkewCorrectedDate } from './utils/getSkewCorrectedDate.mjs';\nimport { getUpdatedSystemClockOffset } from './utils/getUpdatedSystemClockOffset.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Middleware that SigV4 signs request with AWS credentials, and correct system clock offset.\n * This middleware is expected to be placed after retry middleware.\n */\nconst signingMiddlewareFactory = ({ credentials, region, service, uriEscapePath = true, }) => {\n let currentSystemClockOffset;\n return (next) => async function signingMiddleware(request) {\n currentSystemClockOffset = currentSystemClockOffset ?? 0;\n const signRequestOptions = {\n credentials: typeof credentials === 'function' ? await credentials() : credentials,\n signingDate: getSkewCorrectedDate(currentSystemClockOffset),\n signingRegion: region,\n signingService: service,\n uriEscapePath,\n };\n const signedRequest = await signRequest(request, signRequestOptions);\n const response = await next(signedRequest);\n // Update system clock offset if response contains date header, regardless of the status code.\n // non-2xx response will still be returned from next handler instead of thrown, because it's\n // only thrown by the retry middleware.\n const dateString = getDateHeader(response);\n if (dateString) {\n currentSystemClockOffset = getUpdatedSystemClockOffset(Date.parse(dateString), currentSystemClockOffset);\n }\n return response;\n };\n};\nconst getDateHeader = ({ headers } = {}) => headers?.date ?? headers?.Date ?? headers?.['x-amz-date'];\n\nexport { signingMiddlewareFactory };\n//# sourceMappingURL=middleware.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Compose a transfer handler with a core transfer handler and a list of middleware.\n * @param coreHandler Core transfer handler\n * @param middleware\tList of middleware\n * @returns A transfer handler whose option type is the union of the core\n * \ttransfer handler's option type and the middleware's option type.\n * @internal\n */\nconst composeTransferHandler = (coreHandler, middleware) => (request, options) => {\n const context = {};\n let composedHandler = (composeHandlerRequest) => coreHandler(composeHandlerRequest, options);\n for (let i = middleware.length - 1; i >= 0; i--) {\n const m = middleware[i];\n const resolvedMiddleware = m(options);\n composedHandler = resolvedMiddleware(composedHandler, context);\n }\n return composedHandler(request);\n};\n\nexport { composeTransferHandler };\n//# sourceMappingURL=composeTransferHandler.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst SEND_UPLOAD_PROGRESS_EVENT = 'sendUploadProgress';\nconst SEND_DOWNLOAD_PROGRESS_EVENT = 'sendDownloadProgress';\nconst NETWORK_ERROR_MESSAGE = 'Network Error';\nconst NETWORK_ERROR_CODE = 'ERR_NETWORK';\nconst ABORT_ERROR_MESSAGE = 'Request aborted';\nconst ABORT_ERROR_CODE = 'ERR_ABORTED';\nconst CANCELED_ERROR_MESSAGE = 'canceled';\nconst CANCELED_ERROR_CODE = 'ERR_CANCELED';\nconst CONTENT_SHA256_HEADER = 'x-amz-content-sha256';\n\nexport { ABORT_ERROR_CODE, ABORT_ERROR_MESSAGE, CANCELED_ERROR_CODE, CANCELED_ERROR_MESSAGE, CONTENT_SHA256_HEADER, NETWORK_ERROR_CODE, NETWORK_ERROR_MESSAGE, SEND_DOWNLOAD_PROGRESS_EVENT, SEND_UPLOAD_PROGRESS_EVENT };\n//# sourceMappingURL=constants.mjs.map\n","import { getHashedPayload } from '@aws-amplify/core/internals/aws-client-utils';\nimport { CONTENT_SHA256_HEADER } from './constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * A middleware that adds the x-amz-content-sha256 header to the request if it is not already present.\n * It's required for S3 requests in browsers where the request body is sent in 1 chunk.\n * @see https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html\n *\n * @internal\n */\nconst contentSha256MiddlewareFactory = () => (next) => async function contentSha256Middleware(request) {\n if (request.headers[CONTENT_SHA256_HEADER]) {\n return next(request);\n }\n else {\n const hash = await getHashedPayload(request.body);\n request.headers[CONTENT_SHA256_HEADER] = hash;\n return next(request);\n }\n};\n\nexport { contentSha256MiddlewareFactory };\n//# sourceMappingURL=contentSha256middleware.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Cache the payload of a response body. It allows multiple calls to the body,\n * for example, when reading the body in both retry decider and error deserializer.\n * Caching body is allowed here because we call the body accessor(blob(), json(),\n * etc.) when body is small or streaming implementation is not available(RN).\n *\n * @internal\n */\nconst withMemoization = (payloadAccessor) => {\n let cached;\n return () => {\n if (!cached) {\n // Explicitly not awaiting. Intermediate await would add overhead and\n // introduce a possible race in the event that this wrapper is called\n // again before the first `payloadAccessor` call resolves.\n cached = payloadAccessor();\n }\n return cached;\n };\n};\n\nexport { withMemoization };\n//# sourceMappingURL=memoization.mjs.map\n","import { withMemoization } from '@aws-amplify/core/internals/aws-client-utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { CanceledError } from '../../../../../errors/CanceledError.mjs';\nimport { StorageError } from '../../../../../errors/StorageError.mjs';\nimport { NETWORK_ERROR_MESSAGE, NETWORK_ERROR_CODE, ABORT_ERROR_MESSAGE, ABORT_ERROR_CODE, CANCELED_ERROR_CODE, CANCELED_ERROR_MESSAGE } from './constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst logger = new ConsoleLogger('xhr-http-handler');\n/**\n * Base transfer handler implementation using XMLHttpRequest to support upload and download progress events.\n *\n * @param request - The request object.\n * @param options - The request options.\n * @returns A promise that will be resolved with the response object.\n *\n * @internal\n */\nconst xhrTransferHandler = (request, options) => {\n const { url, method, headers, body } = request;\n const { onDownloadProgress, onUploadProgress, responseType, abortSignal } = options;\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n xhr.open(method.toUpperCase(), url.toString());\n Object.entries(headers)\n .filter(([header]) => !FORBIDDEN_HEADERS.includes(header))\n .forEach(([header, value]) => {\n xhr.setRequestHeader(header, value);\n });\n xhr.responseType = responseType;\n if (onDownloadProgress) {\n xhr.addEventListener('progress', event => {\n onDownloadProgress(convertToTransferProgressEvent(event));\n logger.debug(event);\n });\n }\n if (onUploadProgress) {\n xhr.upload.addEventListener('progress', event => {\n onUploadProgress(convertToTransferProgressEvent(event));\n logger.debug(event);\n });\n }\n xhr.addEventListener('error', () => {\n const networkError = new StorageError({\n message: NETWORK_ERROR_MESSAGE,\n name: NETWORK_ERROR_CODE,\n });\n logger.error(NETWORK_ERROR_MESSAGE);\n reject(networkError);\n xhr = null; // clean up request\n });\n // Handle browser request cancellation (as opposed to a manual cancellation)\n xhr.addEventListener('abort', () => {\n // The abort event can be triggered after the error or load event. So we need to check if the xhr is null.\n // When request is aborted by AbortSignal, the promise is rejected in the abortSignal's 'abort' event listener.\n if (!xhr || abortSignal?.aborted)\n return;\n // Handle abort request caused by browser instead of AbortController\n // see: https://github.com/axios/axios/issues/537\n const error = buildHandlerError(ABORT_ERROR_MESSAGE, ABORT_ERROR_CODE);\n logger.error(ABORT_ERROR_MESSAGE);\n reject(error);\n xhr = null; // clean up request\n });\n // Skip handling timeout error since we don't have a timeout\n xhr.addEventListener('readystatechange', () => {\n if (!xhr || xhr.readyState !== xhr.DONE) {\n return;\n }\n const onloadend = () => {\n // The load event is triggered after the error/abort/load event. So we need to check if the xhr is null.\n if (!xhr)\n return;\n const responseHeaders = convertResponseHeaders(xhr.getAllResponseHeaders());\n const { responseType: loadEndResponseType } = xhr;\n const responseBlob = xhr.response;\n const responseText = loadEndResponseType === 'text' ? xhr.responseText : '';\n const bodyMixIn = {\n blob: () => Promise.resolve(responseBlob),\n text: withMemoization(() => loadEndResponseType === 'blob'\n ? readBlobAsText(responseBlob)\n : Promise.resolve(responseText)),\n json: () => Promise.reject(\n // S3 does not support JSON response. So fail-fast here with nicer error message.\n new Error('Parsing response to JSON is not implemented. Please use response.text() instead.')),\n };\n const response = {\n statusCode: xhr.status,\n headers: responseHeaders,\n // The xhr.responseType is only set to 'blob' for streaming binary S3 object data. The streaming data is\n // exposed via public interface of Storage.get(). So we need to return the response as a Blob object for\n // backward compatibility. In other cases, the response payload is only used internally, we return it is\n // {@link ResponseBodyMixin}\n body: (xhr.responseType === 'blob'\n ? Object.assign(responseBlob, bodyMixIn)\n : bodyMixIn),\n };\n resolve(response);\n xhr = null; // clean up request\n };\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n // @see https://github.com/axios/axios/blob/9588fcdec8aca45c3ba2f7968988a5d03f23168c/lib/adapters/xhr.js#L98-L99\n setTimeout(onloadend);\n });\n if (abortSignal) {\n const onCanceled = () => {\n // The abort event is triggered after the error or load event. So we need to check if the xhr is null.\n if (!xhr) {\n return;\n }\n const canceledError = new CanceledError({\n name: CANCELED_ERROR_CODE,\n message: CANCELED_ERROR_MESSAGE,\n });\n reject(canceledError);\n xhr.abort();\n xhr = null;\n };\n abortSignal.aborted\n ? onCanceled()\n : abortSignal.addEventListener('abort', onCanceled);\n }\n if (typeof ReadableStream === 'function' &&\n body instanceof ReadableStream) {\n // This does not matter as previous implementation uses Axios which does not support ReadableStream anyway.\n throw new Error('ReadableStream request payload is not supported.');\n }\n xhr.send(body ?? null);\n });\n};\nconst convertToTransferProgressEvent = (event) => ({\n transferredBytes: event.loaded,\n totalBytes: event.lengthComputable ? event.total : undefined,\n});\nconst buildHandlerError = (message, name) => {\n const error = new Error(message);\n error.name = name;\n return error;\n};\n/**\n * Convert xhr.getAllResponseHeaders() string to a Record. Note that modern browser already returns\n * header names in lowercase.\n * @param xhrHeaders - string of headers returned from xhr.getAllResponseHeaders()\n */\nconst convertResponseHeaders = (xhrHeaders) => {\n if (!xhrHeaders) {\n return {};\n }\n return xhrHeaders\n .split('\\r\\n')\n .reduce((headerMap, line) => {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headerMap[header.toLowerCase()] = value;\n return headerMap;\n }, {});\n};\nconst readBlobAsText = (blob) => {\n const reader = new FileReader();\n return new Promise((resolve, reject) => {\n reader.onloadend = () => {\n if (reader.readyState !== FileReader.DONE) {\n return;\n }\n resolve(reader.result);\n };\n reader.onerror = () => {\n reject(reader.error);\n };\n reader.readAsText(blob);\n });\n};\n// To add more forbidden headers as found set by S3. Intentionally NOT list all of them here to save bundle size.\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS = ['host'];\n\nexport { xhrTransferHandler };\n//# sourceMappingURL=xhrTransferHandler.mjs.map\n","import { userAgentMiddlewareFactory, retryMiddlewareFactory, signingMiddlewareFactory } from '@aws-amplify/core/internals/aws-client-utils';\nimport { composeTransferHandler } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { contentSha256MiddlewareFactory } from '../contentSha256middleware.mjs';\nimport { xhrTransferHandler } from '../xhrTransferHandler.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * S3 transfer handler for browser and React Native based on XHR. On top of basic transfer handler, it also supports\n * x-amz-content-sha256 header, and request&response process tracking.\n *\n * @internal\n */\nconst s3TransferHandler = composeTransferHandler(xhrTransferHandler, [\n contentSha256MiddlewareFactory,\n userAgentMiddlewareFactory,\n retryMiddlewareFactory,\n signingMiddlewareFactory,\n]);\n\nexport { s3TransferHandler };\n//# sourceMappingURL=xhr.mjs.map\n","import { StorageError } from '../../../../../errors/StorageError.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Maps an object to a new object using the provided instructions.\n * The instructions are a map of the returning mapped object's property names to a single instruction of how to map the\n * value from the original object to the new object. There are two types of instructions:\n *\n * 1. A string representing the property name of the original object to map to the new object. The value mapped from\n * the original object will be the same as the value in the new object, and it can ONLY be string.\n *\n * 2. An array of two elements. The first element is the property name of the original object to map to the new object.\n * The second element is a function that takes the value from the original object and returns the value to be mapped to\n * the new object. The function can return any type.\n *\n * Example:\n * ```typescript\n * const input = {\n * Foo: 'foo',\n * BarList: [{value: 'bar1'}, {value: 'bar2'}]\n * }\n * const output = map(input, {\n * someFoo: 'Foo',\n * bar: ['BarList', (barList) => barList.map(bar => bar.value)]\n * baz: 'Baz' // Baz does not exist in input, so it will not be in the output.\n * });\n * // output = { someFoo: 'foo', bar: ['bar1', 'bar2'] }\n * ```\n *\n * @param obj The object containing the data to compose mapped object.\n * @param instructions The instructions mapping the object values to the new object.\n * @returns A new object with the mapped values.\n *\n * @internal\n */\nconst map = (obj, instructions) => {\n const result = {};\n for (const [key, instruction] of Object.entries(instructions)) {\n const [accessor, deserializer] = Array.isArray(instruction)\n ? instruction\n : [instruction];\n if (Object.prototype.hasOwnProperty.call(obj, accessor)) {\n result[key] = deserializer\n ? deserializer(obj[accessor])\n : String(obj[accessor]);\n }\n }\n return result;\n};\n/**\n * Deserializes a string to a number. Returns undefined if input is undefined.\n *\n * @internal\n */\nconst deserializeNumber = (value) => value ? Number(value) : undefined;\n/**\n * Deserializes a string to a boolean. Returns undefined if input is undefined. Returns true if input is 'true',\n * otherwise false.\n *\n * @internal\n */\nconst deserializeBoolean = (value) => {\n return value ? value === 'true' : undefined;\n};\n/**\n * Deserializes a string to a Date. Returns undefined if input is undefined.\n * It supports epoch timestamp; rfc3339(cannot have a UTC, fractional precision supported); rfc7231(section 7.1.1.1)\n *\n * @see https://www.epoch101.com/\n * @see https://datatracker.ietf.org/doc/html/rfc3339.html#section-5.6\n * @see https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1\n *\n * @note For bundle size consideration, we use Date constructor to parse the timestamp string. There might be slight\n * difference among browsers.\n *\n * @internal\n */\nconst deserializeTimestamp = (value) => {\n return value ? new Date(value) : undefined;\n};\n/**\n * Function that makes sure the deserializer receives non-empty array.\n *\n * @internal\n */\nconst emptyArrayGuard = (value, deserializer) => {\n if (value === '') {\n return [];\n }\n const valueArray = (Array.isArray(value) ? value : [value]).filter(e => e != null);\n return deserializer(valueArray);\n};\n/**\n * @internal\n */\nconst deserializeMetadata = (headers) => {\n const objectMetadataHeaderPrefix = 'x-amz-meta-';\n const deserialized = Object.keys(headers)\n .filter(header => header.startsWith(objectMetadataHeaderPrefix))\n .reduce((acc, header) => {\n acc[header.replace(objectMetadataHeaderPrefix, '')] = headers[header];\n return acc;\n }, {});\n return Object.keys(deserialized).length > 0 ? deserialized : undefined;\n};\n/**\n * Internal-only method to create a new StorageError from a service error.\n *\n * @internal\n */\nconst buildStorageServiceError = (error, statusCode) => {\n const storageError = new StorageError({\n name: error.name,\n message: error.message,\n });\n if (statusCode === 404) {\n storageError.recoverySuggestion =\n 'Please add the object with this key to the bucket as the key is not found.';\n }\n return storageError;\n};\n\nexport { buildStorageServiceError, deserializeBoolean, deserializeMetadata, deserializeNumber, deserializeTimestamp, emptyArrayGuard, map };\n//# sourceMappingURL=deserializeHelpers.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Wraps encodeURIComponent to encode additional characters to fully adhere to RFC 3986.\n * @see https://github.com/aws/aws-sdk-js-v3/blob/86b432c464150069678b25ff88d57c2ca26e75a2/packages/smithy-client/src/extended-encode-uri-component.ts#L7\n *\n * @param uri URI string to encode\n * @returns RFC 3986 encoded string\n *\n * @internal\n */\nconst extendedEncodeURIComponent = (uri) => {\n // Match characters normally not encoded by `encodeURIComponent`\n const extendedCharacters = /[!'()*]/g;\n return encodeURIComponent(uri).replace(extendedCharacters, hexEncode);\n};\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n\nexport { extendedEncodeURIComponent };\n//# sourceMappingURL=extendedEncodeURIComponent.mjs.map\n","import { extendedEncodeURIComponent } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyErrorCode } from '@aws-amplify/core/internals/utils';\nimport { StorageError } from '../../../../../errors/StorageError.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nconst assignStringVariables = (values) => {\n const queryParams = {};\n for (const [key, value] of Object.entries(values)) {\n if (value != null) {\n queryParams[key] = value.toString();\n }\n }\n return queryParams;\n};\n/**\n * Serailize the parameters for configuring the S3 object. Currently used by\n * `putObject` and `createMultipartUpload` API.\n *\n * @internal\n */\nconst serializeObjectConfigsToHeaders = async (input) => ({\n ...assignStringVariables({\n 'x-amz-acl': input.ACL,\n 'cache-control': input.CacheControl,\n 'content-disposition': input.ContentDisposition,\n 'content-language': input.ContentLanguage,\n 'content-encoding': input.ContentEncoding,\n 'content-type': input.ContentType,\n expires: input.Expires?.toUTCString(),\n 'x-amz-tagging': input.Tagging,\n ...serializeMetadata(input.Metadata),\n }),\n});\nconst serializeMetadata = (metadata = {}) => Object.keys(metadata).reduce((acc, suffix) => {\n acc[`x-amz-meta-${suffix.toLowerCase()}`] = metadata[suffix];\n return acc;\n}, {});\n/**\n * Serialize the object key to a URL pathname.\n * @see https://github.com/aws/aws-sdk-js-v3/blob/7ed7101dcc4e81038b6c7f581162b959e6b33a04/clients/client-s3/src/protocols/Aws_restXml.ts#L1108\n *\n * @internal\n */\nconst serializePathnameObjectKey = (url, key) => {\n return (url.pathname.replace(/\\/$/, '') +\n `/${key.split('/').map(extendedEncodeURIComponent).join('/')}`);\n};\nfunction validateS3RequiredParameter(assertion, paramName) {\n if (!assertion) {\n throw new StorageError({\n name: AmplifyErrorCode.Unknown,\n message: 'An unknown error has occurred.',\n underlyingError: new TypeError(`Expected a non-null value for S3 parameter ${paramName}`),\n recoverySuggestion: 'This is likely to be a bug. Please reach out to library authors.',\n });\n }\n}\n\nexport { assignStringVariables, serializeObjectConfigsToHeaders, serializePathnameObjectKey, validateS3RequiredParameter };\n//# sourceMappingURL=serializeHelpers.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError, map } from './utils/deserializeHelpers.mjs';\nimport { serializeObjectConfigsToHeaders, assignStringVariables, validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst putObjectSerializer = async (input, endpoint) => {\n const headers = {\n ...(await serializeObjectConfigsToHeaders({\n ...input,\n ContentType: input.ContentType ?? 'application/octet-stream',\n })),\n ...assignStringVariables({ 'content-md5': input.ContentMD5 }),\n };\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n return {\n method: 'PUT',\n headers,\n url,\n body: input.Body,\n };\n};\nconst putObjectDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n return {\n ...map(response.headers, {\n ETag: 'etag',\n VersionId: 'x-amz-version-id',\n }),\n $metadata: parseMetadata(response),\n };\n }\n};\nconst putObject = composeServiceApi(s3TransferHandler, putObjectSerializer, putObjectDeserializer, { ...defaultConfig, responseType: 'text' });\n\nexport { putObject };\n//# sourceMappingURL=putObject.mjs.map\n","import { getAmplifyUserAgent, Category } from '@aws-amplify/core/internals/utils';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction getStorageUserAgentValue(action) {\n return getAmplifyUserAgent({\n category: Category.Storage,\n action,\n });\n}\n\nexport { getStorageUserAgentValue };\n//# sourceMappingURL=userAgent.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst constructContentDisposition = (contentDisposition) => {\n if (!contentDisposition)\n return undefined;\n if (typeof contentDisposition === 'string')\n return contentDisposition;\n const { type, filename } = contentDisposition;\n return filename !== undefined ? `${type}; filename=\"${filename}\"` : type;\n};\n\nexport { constructContentDisposition };\n//# sourceMappingURL=constructContentDisposition.mjs.map\n","import { Amplify } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport { calculateContentMd5 } from '../../utils/md5.mjs';\nimport { resolveS3ConfigAndInput } from '../../utils/resolveS3ConfigAndInput.mjs';\nimport '../../../../errors/types/validation.mjs';\nimport '../../../../utils/logger.mjs';\nimport { validateStorageOperationInput } from '../../utils/validateStorageOperationInput.mjs';\nimport { STORAGE_INPUT_KEY } from '../../utils/constants.mjs';\nimport '../../utils/client/base.mjs';\nimport '../../utils/client/getObject.mjs';\nimport '../../utils/client/listObjectsV2.mjs';\nimport { putObject } from '../../utils/client/putObject.mjs';\nimport '../../utils/client/createMultipartUpload.mjs';\nimport '../../utils/client/uploadPart.mjs';\nimport '../../utils/client/completeMultipartUpload.mjs';\nimport '../../utils/client/listParts.mjs';\nimport '../../utils/client/abortMultipartUpload.mjs';\nimport '../../utils/client/copyObject.mjs';\nimport '../../utils/client/headObject.mjs';\nimport '../../utils/client/deleteObject.mjs';\nimport { getStorageUserAgentValue } from '../../utils/userAgent.mjs';\nimport { constructContentDisposition } from '../../utils/constructContentDisposition.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Get a function the returns a promise to call putObject API to S3.\n *\n * @internal\n */\nconst putObjectJob = (uploadDataInput, abortSignal, totalLength) => async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const { bucket, keyPrefix, s3Config, isObjectLockEnabled, identityId } = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, identityId);\n const finalKey = inputType === STORAGE_INPUT_KEY ? keyPrefix + objectKey : objectKey;\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, onProgress, } = uploadDataOptions ?? {};\n const { ETag: eTag, VersionId: versionId } = await putObject({\n ...s3Config,\n abortSignal,\n onUploadProgress: onProgress,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: bucket,\n Key: finalKey,\n Body: data,\n ContentType: contentType,\n ContentDisposition: constructContentDisposition(contentDisposition),\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n ContentMD5: isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined,\n });\n const result = {\n eTag,\n versionId,\n contentType,\n metadata,\n size: totalLength,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n};\n\nexport { putObjectJob };\n//# sourceMappingURL=putObjectJob.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl, AmplifyUrlSearchParams } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError, parseXmlBody } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError, map } from './utils/deserializeHelpers.mjs';\nimport { validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst INVALID_PARAMETER_ERROR_MSG = 'Invalid parameter for ComplteMultipartUpload API';\nconst completeMultipartUploadSerializer = async (input, endpoint) => {\n const headers = {\n 'content-type': 'application/xml',\n };\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n uploadId: input.UploadId,\n }).toString();\n validateS3RequiredParameter(!!input.MultipartUpload, 'MultipartUpload');\n return {\n method: 'POST',\n headers,\n url,\n body: '' +\n serializeCompletedMultipartUpload(input.MultipartUpload),\n };\n};\nconst serializeCompletedMultipartUpload = (input) => {\n if (!input.Parts?.length) {\n throw new Error(`${INVALID_PARAMETER_ERROR_MSG}: ${input}`);\n }\n return `${input.Parts.map(serializeCompletedPartList).join('')}`;\n};\nconst serializeCompletedPartList = (input) => {\n if (!input.ETag || input.PartNumber == null) {\n throw new Error(`${INVALID_PARAMETER_ERROR_MSG}: ${input}`);\n }\n return `${input.ETag}${input.PartNumber}`;\n};\n/**\n * Parse CompleteMultipartUpload API response payload, which may be empty or error indicating internal\n * server error, even when the status code is 200.\n *\n * Ref: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html#API_CompleteMultipartUpload_Example_4\n */\nconst parseXmlBodyOrThrow = async (response) => {\n const parsed = await parseXmlBody(response); // Handles empty body case\n if (parsed.Code !== undefined && parsed.Message !== undefined) {\n const error = (await parseXmlError({\n ...response,\n statusCode: 500, // To workaround the >=300 status code check common to other APIs.\n }));\n throw buildStorageServiceError(error, response.statusCode);\n }\n return parsed;\n};\nconst completeMultipartUploadDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBodyOrThrow(response);\n const contents = map(parsed, {\n ETag: 'ETag',\n Key: 'Key',\n Location: 'Location',\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\n// CompleteMultiPartUpload API returns 200 status code with empty body or error message.\n// This indicates internal server error after the response has been sent to the client.\n// Ref: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html#API_CompleteMultipartUpload_Example_4\nconst retryWhenErrorWith200StatusCode = async (response, error) => {\n if (!response) {\n return false;\n }\n if (response.statusCode === 200) {\n if (!response.body) {\n return true;\n }\n const parsed = await parseXmlBody(response);\n if (parsed.Code !== undefined && parsed.Message !== undefined) {\n return true;\n }\n return false;\n }\n const defaultRetryDecider = defaultConfig.retryDecider;\n return defaultRetryDecider(response, error);\n};\nconst completeMultipartUpload = composeServiceApi(s3TransferHandler, completeMultipartUploadSerializer, completeMultipartUploadDeserializer, {\n ...defaultConfig,\n responseType: 'text',\n retryDecider: retryWhenErrorWith200StatusCode,\n});\n\nexport { completeMultipartUpload };\n//# sourceMappingURL=completeMultipartUpload.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { AmplifyUrl, AmplifyUrlSearchParams } from '@aws-amplify/core/internals/utils';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError } from './utils/deserializeHelpers.mjs';\nimport { validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst abortMultipartUploadSerializer = (input, endpoint) => {\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n uploadId: input.UploadId,\n }).toString();\n return {\n method: 'DELETE',\n headers: {},\n url,\n };\n};\nconst abortMultipartUploadDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n return {\n $metadata: parseMetadata(response),\n };\n }\n};\nconst abortMultipartUpload = composeServiceApi(s3TransferHandler, abortMultipartUploadSerializer, abortMultipartUploadDeserializer, { ...defaultConfig, responseType: 'text' });\n\nexport { abortMultipartUpload };\n//# sourceMappingURL=abortMultipartUpload.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError, map, deserializeNumber, deserializeTimestamp, deserializeMetadata } from './utils/deserializeHelpers.mjs';\nimport { validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst headObjectSerializer = async (input, endpoint) => {\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n return {\n method: 'HEAD',\n headers: {},\n url,\n };\n};\nconst headObjectDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n // error is always set when statusCode >= 300\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const contents = {\n ...map(response.headers, {\n ContentLength: ['content-length', deserializeNumber],\n ContentType: 'content-type',\n ETag: 'etag',\n LastModified: ['last-modified', deserializeTimestamp],\n VersionId: 'x-amz-version-id',\n }),\n Metadata: deserializeMetadata(response.headers),\n };\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst headObject = composeServiceApi(s3TransferHandler, headObjectSerializer, headObjectDeserializer, { ...defaultConfig, responseType: 'text' });\n\nexport { headObject };\n//# sourceMappingURL=headObject.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl, AmplifyUrlSearchParams } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError, map } from './utils/deserializeHelpers.mjs';\nimport { assignStringVariables, validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst uploadPartSerializer = async (input, endpoint) => {\n const headers = {\n ...assignStringVariables({ 'content-md5': input.ContentMD5 }),\n };\n headers['content-type'] = 'application/octet-stream';\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.PartNumber, 'PartNumber');\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n partNumber: input.PartNumber + '',\n uploadId: input.UploadId,\n }).toString();\n return {\n method: 'PUT',\n headers,\n url,\n body: input.Body,\n };\n};\nconst uploadPartDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n return {\n ...map(response.headers, {\n ETag: 'etag',\n }),\n $metadata: parseMetadata(response),\n };\n }\n};\nconst uploadPart = composeServiceApi(s3TransferHandler, uploadPartSerializer, uploadPartDeserializer, { ...defaultConfig, responseType: 'text' });\n\nexport { uploadPart };\n//# sourceMappingURL=uploadPart.mjs.map\n","import { calculateContentMd5 } from '../../../utils/md5.mjs';\nimport '../../../../../errors/types/validation.mjs';\nimport '@aws-amplify/core/internals/utils';\nimport { logger } from '../../../../../utils/logger.mjs';\nimport '../../../utils/client/base.mjs';\nimport '../../../utils/client/getObject.mjs';\nimport '../../../utils/client/listObjectsV2.mjs';\nimport '../../../utils/client/putObject.mjs';\nimport '../../../utils/client/createMultipartUpload.mjs';\nimport { uploadPart } from '../../../utils/client/uploadPart.mjs';\nimport '../../../utils/client/completeMultipartUpload.mjs';\nimport '../../../utils/client/listParts.mjs';\nimport '../../../utils/client/abortMultipartUpload.mjs';\nimport '../../../utils/client/copyObject.mjs';\nimport '../../../utils/client/headObject.mjs';\nimport '../../../utils/client/deleteObject.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst uploadPartExecutor = async ({ dataChunkerGenerator, completedPartNumberSet, s3Config, abortSignal, bucket, finalKey, uploadId, onPartUploadCompletion, onProgress, isObjectLockEnabled, }) => {\n let transferredBytes = 0;\n for (const { data, partNumber, size } of dataChunkerGenerator) {\n if (abortSignal.aborted) {\n logger.debug('upload executor aborted.');\n break;\n }\n if (completedPartNumberSet.has(partNumber)) {\n logger.debug(`part ${partNumber} already uploaded.`);\n transferredBytes += size;\n onProgress?.({\n transferredBytes,\n });\n }\n else {\n // handle cancel error\n const { ETag: eTag } = await uploadPart({\n ...s3Config,\n abortSignal,\n onUploadProgress: (event) => {\n const { transferredBytes: currentPartTransferredBytes } = event;\n onProgress?.({\n transferredBytes: transferredBytes + currentPartTransferredBytes,\n });\n },\n }, {\n Bucket: bucket,\n Key: finalKey,\n UploadId: uploadId,\n Body: data,\n PartNumber: partNumber,\n ContentMD5: isObjectLockEnabled\n ? await calculateContentMd5(data)\n : undefined,\n });\n transferredBytes += size;\n // eTag will always be set even the S3 model interface marks it as optional.\n onPartUploadCompletion(partNumber, eTag);\n }\n }\n};\n\nexport { uploadPartExecutor };\n//# sourceMappingURL=uploadPartExecutor.mjs.map\n","import { AmplifyErrorCode } from '../types/errors.mjs';\nimport { AmplifyError } from './AmplifyError.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass PlatformNotSupportedError extends AmplifyError {\n constructor() {\n super({\n name: AmplifyErrorCode.PlatformNotSupported,\n message: 'Function not supported on current platform',\n });\n }\n}\n\nexport { PlatformNotSupportedError };\n//# sourceMappingURL=PlatformNotSupportedError.mjs.map\n","import { PlatformNotSupportedError } from '../errors/PlatformNotSupportedError.mjs';\nimport '../errors/errorHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nclass KeyValueStorage {\n constructor(storage) {\n this.storage = storage;\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n async setItem(key, value) {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n this.storage.setItem(key, value);\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n async getItem(key) {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n return this.storage.getItem(key);\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n async removeItem(key) {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n this.storage.removeItem(key);\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n async clear() {\n if (!this.storage)\n throw new PlatformNotSupportedError();\n this.storage.clear();\n }\n}\n\nexport { KeyValueStorage };\n//# sourceMappingURL=KeyValueStorage.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nclass InMemoryStorage {\n constructor() {\n this.storage = new Map();\n }\n get length() {\n return this.storage.size;\n }\n key(index) {\n if (index > this.length - 1) {\n return null;\n }\n return Array.from(this.storage.keys())[index];\n }\n setItem(key, value) {\n this.storage.set(key, value);\n }\n getItem(key) {\n return this.storage.get(key) ?? null;\n }\n removeItem(key) {\n this.storage.delete(key);\n }\n clear() {\n this.storage.clear();\n }\n}\n\nexport { InMemoryStorage };\n//# sourceMappingURL=InMemoryStorage.mjs.map\n","import { ConsoleLogger } from '../Logger/ConsoleLogger.mjs';\nimport { InMemoryStorage } from './InMemoryStorage.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n * @returns Either a reference to window.localStorage or an in-memory storage as fallback\n */\nconst logger = new ConsoleLogger('CoreStorageUtils');\nconst getLocalStorageWithFallback = () => {\n try {\n // Attempt to use localStorage directly\n if (typeof window !== 'undefined' && window.localStorage) {\n return window.localStorage;\n }\n }\n catch (e) {\n // Handle any errors related to localStorage access\n logger.info('localStorage not found. InMemoryStorage is used as a fallback.');\n }\n // Return in-memory storage as a fallback if localStorage is not accessible\n return new InMemoryStorage();\n};\n/**\n * @internal\n * @returns Either a reference to window.sessionStorage or an in-memory storage as fallback\n */\nconst getSessionStorageWithFallback = () => {\n try {\n // Attempt to use sessionStorage directly\n if (typeof window !== 'undefined' && window.sessionStorage) {\n // Verify we can actually use it by testing access\n window.sessionStorage.getItem('test');\n return window.sessionStorage;\n }\n throw new Error('sessionStorage is not defined');\n }\n catch (e) {\n // Handle any errors related to sessionStorage access\n logger.info('sessionStorage not found. InMemoryStorage is used as a fallback.');\n return new InMemoryStorage();\n }\n};\n\nexport { getLocalStorageWithFallback, getSessionStorageWithFallback };\n//# sourceMappingURL=utils.mjs.map\n","import { KeyValueStorage } from './KeyValueStorage.mjs';\nimport { getLocalStorageWithFallback } from './utils.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nclass DefaultStorage extends KeyValueStorage {\n constructor() {\n super(getLocalStorageWithFallback());\n }\n}\n\nexport { DefaultStorage };\n//# sourceMappingURL=DefaultStorage.mjs.map\n","import { KeyValueStorage } from './KeyValueStorage.mjs';\nimport { getSessionStorageWithFallback } from './utils.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nclass SessionStorage extends KeyValueStorage {\n constructor() {\n super(getSessionStorageWithFallback());\n }\n}\n\nexport { SessionStorage };\n//# sourceMappingURL=SessionStorage.mjs.map\n","import { DefaultStorage } from './DefaultStorage.mjs';\nimport { InMemoryStorage } from './InMemoryStorage.mjs';\nimport { KeyValueStorage } from './KeyValueStorage.mjs';\nimport { SessionStorage } from './SessionStorage.mjs';\nexport { CookieStorage } from './CookieStorage.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst defaultStorage = new DefaultStorage();\nconst sessionStorage = new SessionStorage();\nconst sharedInMemoryStorage = new KeyValueStorage(new InMemoryStorage());\n\nexport { defaultStorage, sessionStorage, sharedInMemoryStorage };\n//# sourceMappingURL=index.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl, AmplifyUrlSearchParams } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError, parseXmlBody } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError, map, emptyArrayGuard, deserializeNumber } from './utils/deserializeHelpers.mjs';\nimport { validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst listPartsSerializer = async (input, endpoint) => {\n const headers = {};\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n validateS3RequiredParameter(!!input.UploadId, 'UploadId');\n url.search = new AmplifyUrlSearchParams({\n uploadId: input.UploadId,\n }).toString();\n return {\n method: 'GET',\n headers,\n url,\n };\n};\nconst listPartsDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBody(response);\n const contents = map(parsed, {\n UploadId: 'UploadId',\n Parts: [\n 'Part',\n value => emptyArrayGuard(value, deserializeCompletedPartList),\n ],\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst deserializeCompletedPartList = (input) => input.map(item => map(item, {\n PartNumber: ['PartNumber', deserializeNumber],\n ETag: 'ETag',\n Size: ['Size', deserializeNumber],\n}));\nconst listParts = composeServiceApi(s3TransferHandler, listPartsSerializer, listPartsDeserializer, { ...defaultConfig, responseType: 'text' });\n\nexport { listParts };\n//# sourceMappingURL=listParts.mjs.map\n","import { defaultStorage } from '@aws-amplify/core';\nimport { UPLOADS_STORAGE_KEY } from '../../../utils/constants.mjs';\nimport '../../../utils/client/base.mjs';\nimport '../../../utils/client/getObject.mjs';\nimport '../../../utils/client/listObjectsV2.mjs';\nimport '../../../utils/client/putObject.mjs';\nimport '../../../utils/client/createMultipartUpload.mjs';\nimport '../../../utils/client/uploadPart.mjs';\nimport '../../../utils/client/completeMultipartUpload.mjs';\nimport { listParts } from '../../../utils/client/listParts.mjs';\nimport '../../../utils/client/abortMultipartUpload.mjs';\nimport '../../../utils/client/copyObject.mjs';\nimport '../../../utils/client/headObject.mjs';\nimport '../../../utils/client/deleteObject.mjs';\nimport '../../../../../errors/types/validation.mjs';\nimport '@aws-amplify/core/internals/utils';\nimport { logger } from '../../../../../utils/logger.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst ONE_HOUR = 1000 * 60 * 60;\n/**\n * Find the cached multipart upload id and get the parts that have been uploaded\n * with ListParts API. If the cached upload is expired(1 hour), return null.\n */\nconst findCachedUploadParts = async ({ cacheKey, s3Config, bucket, finalKey, }) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n if (!cachedUploads[cacheKey] ||\n cachedUploads[cacheKey].lastTouched < Date.now() - ONE_HOUR // Uploads are cached for 1 hour\n ) {\n return null;\n }\n const cachedUpload = cachedUploads[cacheKey];\n cachedUpload.lastTouched = Date.now();\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n try {\n const { Parts = [] } = await listParts(s3Config, {\n Bucket: bucket,\n Key: finalKey,\n UploadId: cachedUpload.uploadId,\n });\n return {\n parts: Parts,\n uploadId: cachedUpload.uploadId,\n };\n }\n catch (e) {\n logger.debug('failed to list cached parts, removing cached upload.');\n await removeCachedUpload(cacheKey);\n return null;\n }\n};\nconst listCachedUploadTasks = async (kvStorage) => {\n try {\n return JSON.parse((await kvStorage.getItem(UPLOADS_STORAGE_KEY)) ?? '{}');\n }\n catch (e) {\n logger.debug('failed to parse cached uploads record.');\n return {};\n }\n};\n/**\n * Get the cache key of a multipart upload. Data source cached by different: size, content type, bucket, access level,\n * key. If the data source is a File instance, the upload is additionally indexed by file name and last modified time.\n * So the library always created a new multipart upload if the file is modified.\n */\nconst getUploadsCacheKey = ({ file, size, contentType, bucket, accessLevel, key, }) => {\n let levelStr;\n const resolvedContentType = contentType ?? file?.type ?? 'application/octet-stream';\n // If no access level is defined, we're using custom gen2 access rules\n if (accessLevel === undefined) {\n levelStr = 'custom';\n }\n else {\n levelStr = accessLevel === 'guest' ? 'public' : accessLevel;\n }\n const baseId = `${size}_${resolvedContentType}_${bucket}_${levelStr}_${key}`;\n if (file) {\n return `${file.name}_${file.lastModified}_${baseId}`;\n }\n else {\n return baseId;\n }\n};\nconst cacheMultipartUpload = async (cacheKey, fileMetadata) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n cachedUploads[cacheKey] = {\n ...fileMetadata,\n lastTouched: Date.now(),\n };\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n};\nconst removeCachedUpload = async (cacheKey) => {\n const cachedUploads = await listCachedUploadTasks(defaultStorage);\n delete cachedUploads[cacheKey];\n await defaultStorage.setItem(UPLOADS_STORAGE_KEY, JSON.stringify(cachedUploads));\n};\n\nexport { cacheMultipartUpload, findCachedUploadParts, getUploadsCacheKey, removeCachedUpload };\n//# sourceMappingURL=uploadCache.mjs.map\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Track the progress from multiple concurrent uploads, and invoke the onProgress callback.\n *\n * @internal\n */\nconst getConcurrentUploadsProgressTracker = ({ size, onProgress, }) => {\n const transferredBytesPerListener = [];\n const getTransferredBytes = () => transferredBytesPerListener.reduce((acc, transferredBytes) => acc + transferredBytes, 0);\n return {\n getOnProgressListener: () => {\n transferredBytesPerListener.push(0);\n const listenerIndex = transferredBytesPerListener.length - 1;\n return (event) => {\n const { transferredBytes } = event;\n transferredBytesPerListener[listenerIndex] = transferredBytes;\n onProgress?.({\n transferredBytes: getTransferredBytes(),\n totalBytes: size,\n });\n };\n },\n };\n};\n\nexport { getConcurrentUploadsProgressTracker };\n//# sourceMappingURL=progressTracker.mjs.map\n","import { parseMetadata } from '@aws-amplify/core/internals/aws-client-utils';\nimport { AmplifyUrl } from '@aws-amplify/core/internals/utils';\nimport { composeServiceApi } from '@aws-amplify/core/internals/aws-client-utils/composers';\nimport { defaultConfig } from './base.mjs';\nimport { parseXmlError, parseXmlBody } from './utils/parsePayload.mjs';\nimport { s3TransferHandler } from './runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport './runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { buildStorageServiceError, map } from './utils/deserializeHelpers.mjs';\nimport { serializeObjectConfigsToHeaders, validateS3RequiredParameter, serializePathnameObjectKey } from './utils/serializeHelpers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst createMultipartUploadSerializer = async (input, endpoint) => {\n const headers = await serializeObjectConfigsToHeaders(input);\n const url = new AmplifyUrl(endpoint.url.toString());\n validateS3RequiredParameter(!!input.Key, 'Key');\n url.pathname = serializePathnameObjectKey(url, input.Key);\n url.search = 'uploads';\n return {\n method: 'POST',\n headers,\n url,\n };\n};\nconst createMultipartUploadDeserializer = async (response) => {\n if (response.statusCode >= 300) {\n const error = (await parseXmlError(response));\n throw buildStorageServiceError(error, response.statusCode);\n }\n else {\n const parsed = await parseXmlBody(response);\n const contents = map(parsed, {\n UploadId: 'UploadId',\n });\n return {\n $metadata: parseMetadata(response),\n ...contents,\n };\n }\n};\nconst createMultipartUpload = composeServiceApi(s3TransferHandler, createMultipartUploadSerializer, createMultipartUploadDeserializer, { ...defaultConfig, responseType: 'text' });\n\nexport { createMultipartUpload };\n//# sourceMappingURL=createMultipartUpload.mjs.map\n","import '../../../utils/client/base.mjs';\nimport '../../../utils/client/getObject.mjs';\nimport '../../../utils/client/listObjectsV2.mjs';\nimport '../../../utils/client/putObject.mjs';\nimport { createMultipartUpload } from '../../../utils/client/createMultipartUpload.mjs';\nimport '../../../utils/client/uploadPart.mjs';\nimport '../../../utils/client/completeMultipartUpload.mjs';\nimport '../../../utils/client/listParts.mjs';\nimport '../../../utils/client/abortMultipartUpload.mjs';\nimport '../../../utils/client/copyObject.mjs';\nimport '../../../utils/client/headObject.mjs';\nimport '../../../utils/client/deleteObject.mjs';\nimport '../../../../../errors/types/validation.mjs';\nimport '@aws-amplify/core/internals/utils';\nimport { logger } from '../../../../../utils/logger.mjs';\nimport { constructContentDisposition } from '../../../utils/constructContentDisposition.mjs';\nimport { getUploadsCacheKey, findCachedUploadParts, cacheMultipartUpload } from './uploadCache.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Load the in-progress multipart upload from local storage or async storage(RN) if it exists, or create a new multipart\n * upload.\n *\n * @internal\n */\nconst loadOrCreateMultipartUpload = async ({ s3Config, data, size, contentType, bucket, accessLevel, keyPrefix, key, contentDisposition, contentEncoding, metadata, abortSignal, }) => {\n const finalKey = keyPrefix !== undefined ? keyPrefix + key : key;\n let cachedUpload;\n if (size === undefined) {\n logger.debug('uploaded data size cannot be determined, skipping cache.');\n cachedUpload = undefined;\n }\n else {\n const uploadCacheKey = getUploadsCacheKey({\n size,\n contentType,\n file: data instanceof File ? data : undefined,\n bucket,\n accessLevel,\n key,\n });\n const cachedUploadParts = await findCachedUploadParts({\n s3Config,\n cacheKey: uploadCacheKey,\n bucket,\n finalKey,\n });\n cachedUpload = cachedUploadParts\n ? { ...cachedUploadParts, uploadCacheKey }\n : undefined;\n }\n if (cachedUpload) {\n return {\n uploadId: cachedUpload.uploadId,\n cachedParts: cachedUpload.parts,\n };\n }\n else {\n const { UploadId } = await createMultipartUpload({\n ...s3Config,\n abortSignal,\n }, {\n Bucket: bucket,\n Key: finalKey,\n ContentType: contentType,\n ContentDisposition: constructContentDisposition(contentDisposition),\n ContentEncoding: contentEncoding,\n Metadata: metadata,\n });\n if (size === undefined) {\n logger.debug('uploaded data size cannot be determined, skipping cache.');\n return {\n uploadId: UploadId,\n cachedParts: [],\n };\n }\n const uploadCacheKey = getUploadsCacheKey({\n size,\n contentType,\n file: data instanceof File ? data : undefined,\n bucket,\n accessLevel,\n key,\n });\n await cacheMultipartUpload(uploadCacheKey, {\n uploadId: UploadId,\n bucket,\n key,\n fileName: data instanceof File ? data.name : '',\n });\n return {\n uploadId: UploadId,\n cachedParts: [],\n };\n }\n};\n\nexport { loadOrCreateMultipartUpload };\n//# sourceMappingURL=initialUpload.mjs.map\n","import { DEFAULT_PART_SIZE, MAX_PARTS_COUNT } from '../../../utils/constants.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst calculatePartSize = (totalSize) => {\n if (!totalSize) {\n return DEFAULT_PART_SIZE;\n }\n let partSize = DEFAULT_PART_SIZE;\n let partsCount = Math.ceil(totalSize / partSize);\n while (partsCount > MAX_PARTS_COUNT) {\n partSize *= 2;\n partsCount = Math.ceil(totalSize / partSize);\n }\n return partSize;\n};\n\nexport { calculatePartSize };\n//# sourceMappingURL=calculatePartSize.mjs.map\n","import { StorageValidationErrorCode, validationErrorMap } from '../../../../../errors/types/validation.mjs';\nimport { StorageError } from '../../../../../errors/StorageError.mjs';\nimport { calculatePartSize } from './calculatePartSize.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst getDataChunker = (data, totalSize) => {\n const partSize = calculatePartSize(totalSize);\n if (data instanceof Blob) {\n return helper(data, 0, data.size, partSize);\n }\n else if (ArrayBuffer.isView(data)) {\n return helper(data.buffer, data.byteOffset, data.byteLength, partSize);\n }\n else if (data instanceof ArrayBuffer) {\n return helper(data, 0, data.byteLength, partSize);\n }\n else if (typeof data === 'string') {\n const blob = new Blob([data]);\n return getDataChunker(blob, blob.size);\n }\n else {\n throw new StorageError({\n name: StorageValidationErrorCode.InvalidUploadSource,\n ...validationErrorMap[StorageValidationErrorCode.InvalidUploadSource],\n });\n }\n};\nconst helper = function* (buffer, byteOffset, byteLength, partSize) {\n let partNumber = 1;\n let startByte = byteOffset;\n let endByte = byteOffset + Math.min(partSize, byteLength);\n while (endByte < byteLength + byteOffset) {\n yield {\n partNumber,\n data: buffer.slice(startByte, endByte),\n size: partSize,\n };\n partNumber += 1;\n startByte = endByte;\n endByte = startByte + partSize;\n }\n yield {\n partNumber,\n data: buffer.slice(startByte, byteLength + byteOffset),\n size: byteLength + byteOffset - startByte,\n };\n};\n\nexport { getDataChunker };\n//# sourceMappingURL=getDataChunker.mjs.map\n","import { Amplify } from '@aws-amplify/core';\nimport { StorageAction } from '@aws-amplify/core/internals/utils';\nimport '@smithy/md5-js';\nimport '@aws-amplify/core/internals/aws-client-utils';\nimport '../../../utils/client/runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport '../../../utils/client/runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport { StorageError } from '../../../../../errors/StorageError.mjs';\nimport { resolveS3ConfigAndInput } from '../../../utils/resolveS3ConfigAndInput.mjs';\nimport { CanceledError } from '../../../../../errors/CanceledError.mjs';\nimport '../../../../../errors/types/validation.mjs';\nimport { logger } from '../../../../../utils/logger.mjs';\nimport { validateStorageOperationInput } from '../../../utils/validateStorageOperationInput.mjs';\nimport { STORAGE_INPUT_KEY, DEFAULT_QUEUE_SIZE, DEFAULT_ACCESS_LEVEL } from '../../../utils/constants.mjs';\nimport '../../../utils/client/base.mjs';\nimport '../../../utils/client/getObject.mjs';\nimport '../../../utils/client/listObjectsV2.mjs';\nimport '../../../utils/client/putObject.mjs';\nimport '../../../utils/client/createMultipartUpload.mjs';\nimport '../../../utils/client/uploadPart.mjs';\nimport { completeMultipartUpload } from '../../../utils/client/completeMultipartUpload.mjs';\nimport '../../../utils/client/listParts.mjs';\nimport { abortMultipartUpload } from '../../../utils/client/abortMultipartUpload.mjs';\nimport '../../../utils/client/copyObject.mjs';\nimport { headObject } from '../../../utils/client/headObject.mjs';\nimport '../../../utils/client/deleteObject.mjs';\nimport { getStorageUserAgentValue } from '../../../utils/userAgent.mjs';\nimport { uploadPartExecutor } from './uploadPartExecutor.mjs';\nimport { getUploadsCacheKey, removeCachedUpload } from './uploadCache.mjs';\nimport { getConcurrentUploadsProgressTracker } from './progressTracker.mjs';\nimport { loadOrCreateMultipartUpload } from './initialUpload.mjs';\nimport { getDataChunker } from './getDataChunker.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Create closure hiding the multipart upload implementation details and expose the upload job and control functions(\n * onPause, onResume, onCancel).\n *\n * @internal\n */\nconst getMultipartUploadHandlers = (uploadDataInput, size) => {\n let resolveCallback;\n let rejectCallback;\n let inProgressUpload;\n let resolvedS3Config;\n let abortController;\n let resolvedAccessLevel;\n let resolvedBucket;\n let resolvedKeyPrefix;\n let resolvedIdentityId;\n let uploadCacheKey;\n let finalKey;\n // Special flag that differentiates HTTP requests abort error caused by pause() from ones caused by cancel().\n // The former one should NOT cause the upload job to throw, but cancels any pending HTTP requests.\n // This should be replaced by a special abort reason. However,the support of this API is lagged behind.\n let isAbortSignalFromPause = false;\n const startUpload = async () => {\n const { options: uploadDataOptions, data } = uploadDataInput;\n const resolvedS3Options = await resolveS3ConfigAndInput(Amplify, uploadDataOptions);\n abortController = new AbortController();\n isAbortSignalFromPause = false;\n resolvedS3Config = resolvedS3Options.s3Config;\n resolvedBucket = resolvedS3Options.bucket;\n resolvedIdentityId = resolvedS3Options.identityId;\n const { inputType, objectKey } = validateStorageOperationInput(uploadDataInput, resolvedIdentityId);\n const { contentDisposition, contentEncoding, contentType = 'application/octet-stream', metadata, onProgress, } = uploadDataOptions ?? {};\n finalKey = objectKey;\n // Resolve \"key\" specific options\n if (inputType === STORAGE_INPUT_KEY) {\n const accessLevel = uploadDataOptions\n ?.accessLevel;\n resolvedKeyPrefix = resolvedS3Options.keyPrefix;\n finalKey = resolvedKeyPrefix + objectKey;\n resolvedAccessLevel = resolveAccessLevel(accessLevel);\n }\n if (!inProgressUpload) {\n const { uploadId, cachedParts } = await loadOrCreateMultipartUpload({\n s3Config: resolvedS3Config,\n accessLevel: resolvedAccessLevel,\n bucket: resolvedBucket,\n keyPrefix: resolvedKeyPrefix,\n key: objectKey,\n contentType,\n contentDisposition,\n contentEncoding,\n metadata,\n data,\n size,\n abortSignal: abortController.signal,\n });\n inProgressUpload = {\n uploadId,\n completedParts: cachedParts,\n };\n }\n uploadCacheKey = size\n ? getUploadsCacheKey({\n file: data instanceof File ? data : undefined,\n accessLevel: resolvedAccessLevel,\n contentType: uploadDataOptions?.contentType,\n bucket: resolvedBucket,\n size,\n key: objectKey,\n })\n : undefined;\n const dataChunker = getDataChunker(data, size);\n const completedPartNumberSet = new Set(inProgressUpload.completedParts.map(({ PartNumber }) => PartNumber));\n const onPartUploadCompletion = (partNumber, eTag) => {\n inProgressUpload?.completedParts.push({\n PartNumber: partNumber,\n ETag: eTag,\n });\n };\n const concurrentUploadsProgressTracker = getConcurrentUploadsProgressTracker({\n size,\n onProgress,\n });\n const concurrentUploadPartExecutors = [];\n for (let index = 0; index < DEFAULT_QUEUE_SIZE; index++) {\n concurrentUploadPartExecutors.push(uploadPartExecutor({\n dataChunkerGenerator: dataChunker,\n completedPartNumberSet,\n s3Config: resolvedS3Config,\n abortSignal: abortController.signal,\n bucket: resolvedBucket,\n finalKey,\n uploadId: inProgressUpload.uploadId,\n onPartUploadCompletion,\n onProgress: concurrentUploadsProgressTracker.getOnProgressListener(),\n isObjectLockEnabled: resolvedS3Options.isObjectLockEnabled,\n }));\n }\n await Promise.all(concurrentUploadPartExecutors);\n const { ETag: eTag } = await completeMultipartUpload({\n ...resolvedS3Config,\n abortSignal: abortController.signal,\n userAgentValue: getStorageUserAgentValue(StorageAction.UploadData),\n }, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload.uploadId,\n MultipartUpload: {\n Parts: inProgressUpload.completedParts.sort((partA, partB) => partA.PartNumber - partB.PartNumber),\n },\n });\n if (size) {\n const { ContentLength: uploadedObjectSize } = await headObject(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n });\n if (uploadedObjectSize && uploadedObjectSize !== size) {\n throw new StorageError({\n name: 'Error',\n message: `Upload failed. Expected object size ${size}, but got ${uploadedObjectSize}.`,\n });\n }\n }\n if (uploadCacheKey) {\n await removeCachedUpload(uploadCacheKey);\n }\n const result = {\n eTag,\n contentType,\n metadata,\n };\n return inputType === STORAGE_INPUT_KEY\n ? { key: objectKey, ...result }\n : { path: objectKey, ...result };\n };\n const startUploadWithResumability = () => startUpload()\n .then(resolveCallback)\n .catch(error => {\n const abortSignal = abortController?.signal;\n if (abortSignal?.aborted && isAbortSignalFromPause) {\n logger.debug('upload paused.');\n }\n else {\n // Uncaught errors should be exposed to the users.\n rejectCallback(error);\n }\n });\n const multipartUploadJob = () => new Promise((resolve, reject) => {\n resolveCallback = resolve;\n rejectCallback = reject;\n startUploadWithResumability();\n });\n const onPause = () => {\n isAbortSignalFromPause = true;\n abortController?.abort();\n };\n const onResume = () => {\n startUploadWithResumability();\n };\n const onCancel = (message) => {\n // 1. abort in-flight API requests\n abortController?.abort(message);\n const cancelUpload = async () => {\n // 2. clear upload cache.\n if (uploadCacheKey) {\n await removeCachedUpload(uploadCacheKey);\n }\n // 3. clear multipart upload on server side.\n await abortMultipartUpload(resolvedS3Config, {\n Bucket: resolvedBucket,\n Key: finalKey,\n UploadId: inProgressUpload?.uploadId,\n });\n };\n cancelUpload().catch(e => {\n logger.debug('error when cancelling upload task.', e);\n });\n rejectCallback(\n // Internal error that should not be exposed to the users. They should use isCancelError() to check if\n // the error is caused by cancel().\n new CanceledError(message ? { message } : undefined));\n };\n return {\n multipartUploadJob,\n onPause,\n onResume,\n onCancel,\n };\n};\nconst resolveAccessLevel = (accessLevel) => accessLevel ??\n Amplify.libraryOptions.Storage?.S3?.defaultAccessLevel ??\n DEFAULT_ACCESS_LEVEL;\n\nexport { getMultipartUploadHandlers };\n//# sourceMappingURL=uploadHandlers.mjs.map\n","import '@smithy/md5-js';\nimport '@aws-amplify/core/internals/aws-client-utils';\nimport '../../utils/client/runtime/s3TransferHandler/fetch.mjs';\nimport 'fast-xml-parser';\nimport '../../utils/client/runtime/s3TransferHandler/xhr.mjs';\nimport 'buffer';\nimport '@aws-amplify/core/internals/utils';\nimport { assertValidationError } from '../../../../errors/utils/assertValidationError.mjs';\nimport { StorageValidationErrorCode } from '../../../../errors/types/validation.mjs';\nimport { MAX_OBJECT_SIZE, DEFAULT_PART_SIZE } from '../../utils/constants.mjs';\nimport { createUploadTask } from '../../utils/transferTask.mjs';\nimport { byteLength } from './byteLength.mjs';\nimport { putObjectJob } from './putObjectJob.mjs';\nimport { getMultipartUploadHandlers } from './multipart/uploadHandlers.mjs';\n\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nfunction uploadData(input) {\n const { data } = input;\n const dataByteLength = byteLength(data);\n assertValidationError(dataByteLength === undefined || dataByteLength <= MAX_OBJECT_SIZE, StorageValidationErrorCode.ObjectIsTooLarge);\n if (dataByteLength !== undefined && dataByteLength <= DEFAULT_PART_SIZE) {\n // Single part upload\n const abortController = new AbortController();\n return createUploadTask({\n isMultipartUpload: false,\n job: putObjectJob(input, abortController.signal, dataByteLength),\n onCancel: (message) => {\n abortController.abort(message);\n },\n });\n }\n else {\n // Multipart upload\n const { multipartUploadJob, onPause, onResume, onCancel } = getMultipartUploadHandlers(input, dataByteLength);\n return createUploadTask({\n isMultipartUpload: true,\n job: multipartUploadJob,\n onCancel: (message) => {\n onCancel(message);\n },\n onPause,\n onResume,\n });\n }\n}\n\nexport { uploadData };\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"sourceRoot":"","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283]}