{"version":3,"file":"static/chunks/198-bdd9ab9e83d26510.js","mappings":"mHacA,EOII,EAAgB,IChBpB,EGMI,EEIA,ECVA,EAAK,gBIIT,ECJI,EAAO,EC2KP,CN3KK,CM2Ka,EAAkB,EAAgB,STrKpC,CSqKoC,CD3K/C,CC2K+C,ED3KvC,EC2KuC,MAAlB,EAAkB,SAApC,CAAoC,IE9J7C,EAQA,EaPP,EKZA,EsE4HA,EAAkB,EAAkB,EE9GpC,EAAkB,EAAkB,EEyIpC,GAAkB,GAAkB,GAAkB,GAAkB,CJ3BxD,EAAkB,EAAkB,CI2BwD,GAAkB,GAAkB,EAAhI,CAAkJ,EAAhI,CAAmJ,EAAjI,CFzIpC,EAAkB,CEyIyL,CFzIvK,CEyIoC,CAAsJ,EAApI,CAAuJ,EAArI,CEzJ5H,EFyJ8I,CG1E9I,EH0EgK,CG1E9I,GAAkB,GH0EkK,CEzJjM,EFyJoN,GAAmB,GG1EhI,GH0EsK,GG1ElI,GAAkB,GAAmB,GAAmB,CAAlI,EAAqJ,CAAnI,CAAxE,CAA8N,CAApI,CAAxE,CAA+N,CAArI,CAAxE,CAAgO,CAAtI,EAAyJ,CAAvI,EE1DhK,EF0DmL,CE1DjK,EF0DoL,CIJtM,EJIyN,CIJvM,EJI0N,CIJxM,EJI2N,CIJzM,EJI4N,CIJ1M,EJI6N,CIJ3M,EJI8N,CIJ5M,GAAkB,GAAkB,GAAkB,GAAmB,EFtDrK,CEsDwL,EFtDtK,CUrBlC,ER2EwF,CS3ExF,ET2EkC,CgB3ElC,EhB2EoD,CgB3E7C,EhB2EuI,CiB3E9I,CTAK,CR2E2J,CiB3EzJ,ERAF,CT2E8K,EgB3E9K,ChB2EiM,GAAmB,EiB3EpN,CGAL,GAAO,GHAc,CCAhB,ECAA,GEkTa,GAAkB,GAAkB,EDlTjD,CCkTmE,GDlT3D,GCkT+F,GAAkB,GAAkB,GAAkB,GAAmB,GAAmB,GAAmB,CAA3M,EAA8N,CAA5M,EI/RlC,CJ+RoD,EI/RlC,CJ+RoD,EI/RlC,CJ+RoD,EI/RlC,CJ+RoD,EI/RlC,CJ+RoD,EI/RlC,CJ+RoD,EI/RlC,CJ+RoD,EI/RlC,EJ+RqD,CI/RnC,EJ+RsD,CM9QtM,EN8QyN,CM9QvM,EN8Q0N,CM9QxM,EN8Q2N,CM9QzM,GFjBF,GAAkB,GAAkB,GAAkB,GAAkB,GAAkB,GAAkB,GQuD5H,GL1E/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C,EACY,EAAM,WAA+C,GAAoB,yBAA0B,SAA1B,aAAgD,aAAa,yBAAyB,iBAAiB,eAAe,kCAAkC,mBAAmB,iBAAkB,2BAA2B,KAAK,8BAA+B,sBAAsB,aAAa,yBAAyB,iBAAiB,eAAe,kCAAkC,mBAAmB,iBAAkB,2BAA2B,KAAK,mBAErhB,OADA,QACA,yBACC,EC3KD,YACA,eACA,QACA,qBACA,YACA,uBACA,YACA,uBACA,YACA,wBACA,UACA,sBACA,iBACA,OACA,kCACA,KACA,eACA,UACA,EACA,QAAoB,sBAIpB,OAHA,qBACA,MACA,KACA,CACA,EACA,oDACA,cACA,aACA,aACA,aACA,aACA,YACA,EACA,YACA,MACA,qBACA,KACA,EACA,gBACA,MACA,aACA,IACA,OACA,EAAM,OACN,MACA,CACA,CACA,iBACA,IACA,aACA,CAMA,OALA,YACA,cACA,aACA,MACA,EACA,CACA,EACA,+DAEA,KACA,EAEA,eACA,sEACA,yBACA,uBACA,sBACA,gBACA,wBACA,aACA,oFAGA,IAEA,EACA,UACA,KACA,MACA,iBACA,IACA,YACA,OAEA,SACA,KAEA,CACA,cACA,OACA,KACA,yBACA,OAGA,CAIA,cACA,MACA,OACA,sBAEA,CACA,cACA,SAEA,KADA,aAMA,GAJA,IACA,kCACA,OAEA,KAhBA,MAkBA,MACA,CACA,WACA,qCACA,WACA,WACA,UACA,CACA,cACA,cACA,IACA,OACA,OACA,uBACA,QACA,CAAK,CACL,WACA,uBACA,aAEA,SACA,SACA,UACA,WACA,wBACA,WACA,IAEA,CACA,CACA,CACA,iBACA,cACA,IACA,IACA,CAAM,SACN,WACA,CACA,CAAG,CACH,8BC5JA,MCGO,SAAS,KAAQ,CDHxB,CCGuB,0DDHvB,kHCKO,IAAM,GAAe,CAAC,EAAU,EAAU,IAC/C,OAAO,eAAe,EAAK,EAAK,OAAE,EAAO,UAAU,EAAM,cAAc,CAAK,CAAC,EAOlE,GAAK,CAChB,IAAK,MAAM,QACX,IAAS,GACP,CAAC,CAAC,GAAK,aAAE,YAAY,KACvB,IAAM,GAA6B,YAAb,OAAO,EAC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B,EAAY,KAClB,EAH4B,GAAG,CAGxB,EADwB,GAEzB,EAAU,SAAS,EACd,KAAK,OAAO,CAAC,CAExB,CACF,CITO,IAAM,GAAU,GAA4B,gBAAAC,CAAU,EAAQ,IAE/D,GAAmB,CAAC,CAFN,CIDpB,+BACA,qBACA,eACA,UAAmC,GAAY,QAC/C,CAD+C,EAC/C,gCACA,SACA,cACA,aACA,CAEA,aACA,wBAEA,EAIA,oBACA,eACA,QACA,cACA,aACA,wBACQ,EAAE,mBACV,+BAEA,CAEA,iBACA,gBACA,CACA,aACA,aAEA,WACA,mBAEA,qBACQ,EAAE,UACV,oBACA,IACA,oBACA,WACA,wBAIA,kBAGA,cACA,GACA,CACA,QACA,SAAY,GAAO,KACnB,aACQ,EAAE,oBACV,mBACA,wBACA,8BACA,GACA,yBACA,aAEA,CACA,EAIA,oBACA,eACA,SACA,kBACA,eAAqB,GAAkB,CACvC,aACK,CAFkC,CAKvC,iBACA,gBACA,CACA,WACA,mBACA,yDACA,CACA,YACA,GAAQ,EAAG,SACX,mBACA,QAEA,gBACA,aACA,EAAM,0BAGN,QAFA,mBAIA,QACA,CACA,SACA,GACA,gBAAuB,GAAkB,CACzC,cADyC,OACzC,OACO,EAEP,cACA,aACA,CACA,EAcA,IAAoB,mBAGpB,oBACA,eACA,QACA,cACA,gBACA,CACA,YACA,SAUA,OATI,GAAQ,oBACZ,MACA,mBACiB,GAAa,GAC9B,KAAsB,EADQ,CACK,GAC3B,GACR,IAFmC,CAEnC,GAEA,CAAK,EACL,CACA,CAEA,YACA,cACA,iCACA,CACA,QACA,cACM,GAAI,0BAEV,CAEA,CAJU,YAIV,GACA,MACA,cAEA,OADM,GAAQ,wBACd,aACA,CACA,CAEA,iBACA,iBAAoC,GAAa,IACjD,MADiD,SACjD,QAEA,YACA,GACM,GAAI,iBAEV,CACA,EAGA,QANU,SAMV,GACA,eACA,QACA,CAEA,iBACA,gBACA,CACA,WACA,uCACA,CACA,YACA,+BACA,mBACA,8CAEA,0BACA,GACA,CACA,EACA,eAEA,OADmB,GAAgB,UACnC,GADmC,GACnC,GACA,CAIA,eACA,YACA,uBAA+C,EAAG,WAA8B,GAAiB,QACjG,CAkBA,IAnBiG,GAmBjG,QACA,MAGA,CAAK,EAAG,mDAER,MAAS,iBAAU,SACnB,MAAwB,aAAM,OAC9B,KACI,kBAAW,CACf,IACA,UA+DA,cAOA,OANA,IACQ,EAAG,QACX,KAEA,aAEA,CACA,EAvEA,IACA,CAAO,CACP,KAEA,eA+CA,KACA,cASA,OARA,kBACA,SACA,IACA,KACA,oCACA,GACA,YACA,qBACA,KACA,EA1DA,KACA,EAAwB,KACxB,OACA,gBACA,SAIA,IAPsC,CAMtC,gDAEA,GAEA,EACA,cACA,EAAwB,aAAM,GAC1B,GAAyB,KAC7B,YACM,GAAK,KAAgB,GAAgB,MAC3C,KACA,EAF2C,OAAhC,CAFkB,EAKnB,GACV,eACA,GAAqB,GAAmB,OAFzB,IAEyB,GAE9B,EAF8B,CAE3B,yBAEb,IAEI,gBAAS,OACT,GAAO,SACX,gBACM,GAAK,GAFA,GAEA,IAA0B,GAAmB,KACxD,CAAK,EACL,OAFW,CAA6C,iBAExD,eACA,OAA2B,gBAAmB,IAAc,WAAmB,CAC/E,CAAG,CACH,EACA,SACA,iBACA,cACA,WACA,CACA,iBACA,kBACM,GAAG,kBAET,CACA,EAwBA,mCA+BA,MAA8B,EAAG,aAAyB,EAAG,kCAA0C,EAAG,sBCzU1G,oBACA,OAAS,EAAE,iBACX,CACA,gCAAsE,EAAE,aAA2B,GAAO,iBAC1G,UAAiC,EAAE,kBACnC,4DACA,QACA,cACA,QACA,4BAEA,eADA,YACA,EAEA,SACA,gBACA,gBACS,EAAE,SACX,QAEA,CACA,QACA,EACA,IACA,SACA,UACA,UACA,WACA,UACA,WACA,SACA,CACA,IACA,SACA,OACA,KACA,MACA,OACA,QACA,QACA,SACA,UACA,YACA,UACA,QACA,UACA,UACA,WACA,UACA,WACA,SACA,YAEA,QACA,QACA,OACA,UACA,UACA,QACA,SACA,QACA,WACA,cAEA,OACA,SACA,UACA,EAcA,eACA,MAdA,YACA,SACA,IAOA,GANE,GAAQ,UACV,SACA,OACA,IAEA,CAAG,EACH,EACA,QAEA,EAEA,GACA,MACA,OAAkB,MAElB,OADI,GAAQ,2BACZ,CACA,CACA,OAAW,KACX,CACA,eAEA,OADA,EAAU,GAAa,GACd,EAAE,KADY,GACZ,UAAuC,GAAgB,GAAU,GAAC,OAAX,KAAW,cAC7E,YACA,aACG,MACH,CAMA,eACA,OAAS,EAAE,SAAa,EAAE,SAAa,EAAE,UACzC,CACA,iBACA,iBACA,YACA,CA8GA,QATa,wBAWb,CAXyC,IAWzC,EACA,UACA,OvBtJU,CuBsJA,EvBtJK,EuBuJf,GADiB,GACjB,EACA,EACA,SACA,cAMA,gBACA,sBACA,CACA,EA0BA,iBACA,GAAO,EAAG,cAEN,CACJ,OAA6B,EAAG,kBAAwB,EAAG,kBAC3D,GAA4B,EAAG,mBAA0B,EAAG,iBAAwB,EAAG,eACvF,kBACA,gBAEA,GACA,oBAEA,MAVA,iBAWA,CAGA,UACA,SACA,cACA,gBACA,eACA,mBACA,mBACA,mBACA,iBACA,CACA,EAIA,mBAAiC,2CAA0C,EAC3E,+BACA,EACA,EACA,gCACA,KACA,QACM,CACK,EAAG,eACd,yBAEA,cACA,SACA,sBAEA,mBACA,GACA,qBACA,YAEA,WACA,IAEA,CACA,aACA,qBACA,qBACA,WACA,SAA6B,GAAG,KAChC,CACA,aACA,MAAwB,GAAE,eAC1B,aACA,EAAkB,GAAG,gBACrB,oBACA,mBAEA,GAEA,CACA,aACA,WACA,eAEA,uBACA,qBACA,oBACA,OAEA,IACA,SAAwB,uBAA0B,GAClD,CAAQ,SACR,IACA,CACA,CACA,CAAG,CACH,CAYA,oGACA,QACA,wBAEA,QACA,QACA,QACA,YACA,aACA,CAAC,CACD,iBACA,QACA,WACA,YACA,CAAC,CACD,QACA,QACA,aACA,WACA,CAAC,EAGD,qBACA,IAAU,8BAA2B,EACrC,CAAU,qBAAwC,SAClD,kBAGA,yBAUA,EACA,EA4CA,CAtDA,aACA,YACA,SACA,EACA,OAEA,uBAKA,cACA,kBAEA,MACA,MAEA,2BACA,wBAEA,KAGA,MAFA,WACA,KACA,CAEA,EACA,UACA,aACA,SACA,iBACA,GAAY,GAAE,cAId,MAHA,MACA,kBACA,KACA,EAEA,KACA,MAAuB,EAAG,SAAe,MAAU,CAAI,UACvD,cACQ,GAAS,UACH,EAAG,YACjB,QAEA,CAAS,EACT,uBAOA,OANA,KACA,UACA,sBACA,oBACA,CAAW,EAEX,CACA,IACA,EAEA,GAAQ,GAAE,cAEV,OADA,MACA,SAEA,IACA,MAEA,EADU,EAAG,QACb,WACA,eACA,UAEA,EAAS,IAET,qCAEA,iCACA,mBACA,CAAM,SACN,mBACA,gBACQ,mBACR,gBAEA,OAEA,EAAM,OACN,eACA,YACA,qBACA,qBAEA,CAMA,OALQ,EAAG,SACL,GAAI,oBACV,aACA,CAAO,EAEP,CACA,KAhGA,CAiGA,CACA,iBACE,GAAK,0BACP,qBACA,sBACA,qCACA,GACA,cACA,CACA,2BACA,cACA,MACA,0IAEA,CACA,EACA,uBACA,cACA,4BACA,CACA,EAWA,sBACA,KACA,iBAA+B,GAC/B,OAD0C,MAC1C,CACA,oBACA,aACA,gBACA,CACA,eACA,qBACA,CACA,gBACA,oBACA,iBACA,0BAEA,CAEA,MACA,MAAiB,GAAW,MAC5B,EAD4B,KAC5B,eACA,CAEA,SACA,OAAW,GAAE,UACb,CAEA,CAHa,WAGb,MAEA,OlBnhBE,GACE,GAAG,wCAAM,wCkBkhBF,GAAE,UACb,CACA,CAFa,OAEb,CACA,iBACA,CACA,iBACA,MACA,cACA,CACA,mBACA,MACA,cACA,CAEA,UACA,CAEA,UACA,CAEA,kBACI,GAAkB,MACtB,SADsB,KAEtB,YACA,QACA,MACA,CAAK,CACL,CAEA,qBACA,WACM,GAAS,WAEX,GAAkB,MACtB,SADsB,OAEtB,YACA,UACA,CAAK,CACL,CACA,EAGA,6BAIA,kBACA,OAHA,EAGA,SACA,OAHA,EAGA,SACA,+BACA,mBALA,EAKA,UAGA,oBACA,iBAqBA,GApBA,QAEA,sBAEA,qBAEA,aACA,UACA,WACA,mBACA,oBACA,gBACA,EAEA,2BAEA,mBAEA,iBACA,yBACA,CAAS,EAAG,UAAe,EAAG,SAC9B,MAAoB,EAAG,SAAe,MAAU,CAAI,aAC1C,EAAG,iBACb,eAEA,aACA,CACA,CAEA,WACA,gDACA,CACA,WACA,OAAW,GAAc,kBACzB,CACA,eACA,MAAiB,GAAY,MAC7B,EAD6B,KAC7B,aAA2B,GAAa,0DACxC,CAIA,kBACA,eACA,CAKA,kBACA,eACA,CAIA,eACA,eACA,CAKA,gBACA,2BAGA,WACA,SACA,KACA,iBACA,UAAU,GAAW,EACrB,CAAY,UAAkB,EAC9B,EAAoB,GAAU,KAC9B,EAD8B,GACV,GAAa,OACjC,GAAiB,GAAS,GAAc,CAAf,CAAe,MAExC,EAFwC,MAExC,iBACA,UACA,OACA,MAEA,eAA6B,GAAc,2BAE3C,cACA,IACA,WASA,EAPA,GADA,iBACA,cACA,UACA,MACA,CACA,uBACA,kBACA,uBAA4D,EAAG,0CAE/D,0DACA,GAAa,EAAG,kBAiBN,YACV,gCACA,qBACA,kBACA,gCACA,KACA,EAAU,IACV,wCACA,2BACA,qBACA,GAA6B,EAAG,QAChC,kBAIA,cADA,GAEA,YAA0B,MAE1B,EADA,iBAEA,oBADA,EAFwC,KAQxC,GACA,iBAEA,OACA,KAGA,IAEA,GAFA,wBACA,oBACA,SACA,GApBA,EAoBA,EACA,MACA,CACA,MAtDgB,CAChB,OACA,gBACA,sCACA,kCACA,uBACA,4CACA,qBAIA,EADA,6CACA,YACA,sBAGA,GADA,wBACA,kBACA,MACA,CAsCA,CAtCU,CAsCV,eACA,kBACA,8CACA,KAEA,CACA,eACA,OAEA,EACA,UAEA,KAEA,uBACA,MAEA,CAAK,EACL,MAAiB,GAAY,MAC7B,EAD6B,EAC7B,WACA,MACA,MAAuB,GAAc,KACrC,KADqC,CACrC,iBACA,cACA,mBACQ,YACR,kBAEA,YACA,EAAM,OACN,iBAEA,CAEA,OAMA,OALI,GAAI,oBACR,aACA,eACA,YACA,CAAK,EACL,KAMA,QACA,cAAmB,SAAa,CAChC,CAEA,SACA,cAAmB,SAAc,CACjC,CAEA,SACA,aACA,IAAc,eAA2B,eACnC,GAAI,oBACV,gBACA,SACA,gBAEA,YACA,CAAO,CACP,CACA,YAGA,UAGA,MAFA,8BACA,QACA,KAEA,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BACA,CAIA,SACA,qBACI,GAAY,YAAa,GAAc,OAC3C,GAD2C,QAC3C,EACA,+CAEA,WACA,YACA,UACA,eAGA,CACA,UACQ,GAAE,cACV,cAEM,GAAU,WAEhB,CAMA,WACA,aACA,YACA,qBACM,GAAK,aACX,SACA,CAAO,EACP,GAHW,OAGX,EACA,yCAEM,GAAmB,MACzB,SADyB,GAEzB,YACO,EACP,uDACM,GAAU,sBAChB,YACA,aACA,yBAEA,CACA,CACA,EACA,iBACA,YAEA,OAAS,GADT,IACgB,CADhB,OACgB,EAChB,CACA,+BACA,YACA,MACA,oBACA,iBACA,cACA,WACA,KACA,OAEA,WAEA,aAIA,sBAEA,qBACA,QAGA,KACK,CACL,CACA,CACA,eACA,IAAU,aAAgB,QAC1B,UAMA,OALM,EAAG,SACT,QACM,EAAG,SACT,QACA,iCACA,CACA,CAQA,iBACE,GAAS,2BACX,CACA,QACA,UACA,SACA,WACA,UACA,WACA,CACA,mBACA,mDACA,CACA,sBACA,uBACA,yBACA,CAcA,uCACA,KACA,SACA,iBACA,aAEA,gBAEA,cAEA,oBAEA,qBAEA,sBAEA,iBAEA,aACA,UACA,mBACA,oBACA,gBACA,EAEA,cACA,gBACA,iBACA,cACA,EACA,uCACA,GACA,gBAEA,GACA,YAAmB,gBAAyB,CAE5C,CAKA,WACA,iEACA,kCAEA,CACA,WACA,kBAEA,YACA,YACA,CAEA,MACA,SAEA,OADA,+BACA,CACA,CAEA,OACA,gBACA,WACW,EAAG,SACd,sBAEA,CACA,CAEA,UAIA,OAHA,GACA,uBAEA,KASA,SACA,UAAU,GAAQ,WAMlB,CALA,EACA,EAAc,GAAQ,WAEtB,cAEA,aACA,qBAEA,WACA,SAkFA,KACA,2CACA,WAEA,EAtFA,QACA,CAEA,UAIA,GAHA,SACA,MAEA,GACA,mBACM,GAAM,GAAQ,qBACpB,EAAM,EADK,EAEX,kCACA,0BAEA,YAGA,SACA,GAAQ,EAAG,QACX,YAAmB,SAAa,MAC1B,CACN,mBACM,GAAM,GAAQ,mBACpB,CACA,KAFW,EAEX,KAGA,UACA,GAAQ,EAAG,QACX,YAAmB,SAAc,MAC3B,CACN,mBACM,GAAM,GAAQ,oBACpB,CACA,IAFW,GAEX,KAGA,QACI,GAAS,eACb,CAEA,WACA,YAAY,uBAA4B,aACxC,sBACA,uBACA,yCACA,iBACM,GAAM,YACZ,mBACA,oBACA,CAAO,GAEP,wBACA,+BACA,WACM,GAAM,YACZ,UACA,oBACA,CAAO,EAEP,IACA,iBACM,GAAM,YACZ,UACA,oBACA,CAAO,EAEP,CAEA,iBACA,oBACA,4BACA,QACA,gCAEM,kBAGN,OAFA,8BAGI,GAAI,sBACR,CACA,EAMA,yBACA,SAAU,2CAA+C,EACzD,EAAoB,EAAG,2BACvB,GACA,YAEA,QACA,YACA,QACA,cACA,MAAkB,EAAG,SAAa,EAAG,iBACrC,GACA,YACA,gBACA,GACA,mBAGI,GAAK,OACT,WACA,GAAU,EAAG,KAFJ,GAEI,CACb,mBACA,gBAAwB,cAAqB,IAC7C,eACA,GACA,GACA,gBACA,GACA,kBAEA,SACA,WACA,eACA,eACA,CAAa,CAEb,EACA,GACA,WAEA,CACA,CAAK,EAEL,gBACA,oBACA,iBACI,GAAW,qCACX,UACJ,aAEA,sCACA,0BAEA,qCACA,mBACA,OACA,qBACA,QACA,QACA,SACA,MAAiB,GACjB,CADqB,MACH,GAClB,CADsB,KACtB,KACA,GACA,qBACA,WAEA,WACA,EACA,GACA,EACA,EACA,EACA,IAIA,CACA,CACA,CAAO,GAGP,UACA,sBACA,oBACA,CAAK,EAEL,iCACA,gCACA,gBACA,KAEA,OADA,UACA,UAEA,CAIA,OAHA,GACI,GAAI,kCAER,CACA,CA2BA,iBACA,aAKA,OAJA,QACA,GACI,GAAiB,KAErB,CACA,CACA,MAJqB,GAIrB,UACA,QACI,GAAK,WACT,oBACA,eACA,CAAK,CAEL,CACA,iBACE,GAAK,MACP,kBACA,IAFO,CAEP,GAEA,CAAG,CACH,CAMA,SACA,WACA,KACC,IACD,MAAoB,iBAAU,KAC9B,kDACA,ENlmDO,SAAS,CMkmDI,CNlmD8B,GAAmB,GAC7D,CAAC,EAAO,CAAI,IAAJ,EAAI,SAAAC,CAChB,KA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QAEA,CACA,OACA,MAAmB,EAAI,kCAAoC,IAAkB,GAAS,GAAc,CAAf,EAAZ,CAA2B,UACpG,sBACA,CACA,SACA,+BACA,aACM,GAAO,GAAW,UACxB,SACA,CAAO,EACG,GAAE,eACJ,GAAI,mCACZ,UAEQ,GAAU,YAGlB,CAEA,UACA,QACI,GAAO,GAAQ,iBACT,GAAc,IAChB,CAFE,EAEe,GADD,GACC,EAEzB,KAFyB,GAGzB,QACA,oBAEA,2BAEA,CAAK,EACL,gBACA,aACA,CAEA,UACI,GAAO,GAAQ,iBACT,GAAc,IAChB,CAFE,EAEkB,GADJ,GACI,CAE5B,CAAK,EACL,MAH4B,MAG5B,SACA,QACA,CAEA,iBACA,iBACA,OACA,gBAEA,2BACA,eAEM,eACN,8BACM,oBACN,eAAsB,GAAQ,oBAC9B,0CACA,EACA,CAEA,CACA,EACA,eACA,kBAEA,eACA,sCACA,CACA,eACA,SACA,UACI,GAAO,GAAW,SACtB,OACA,CAAK,EACD,GAAmB,GACvB,YADuB,OAEvB,CACA,CAAK,EAEL,CAYA,GAAO,QACP,IADO,oBACmB,IAC1B,qBACA,CAAC,EACY,GAAU,wBCx6EvB,SAQA,MAoDA,IACA,2BACA,qBACA,oBACA,oBACA,WACA,gBACA,mBACA,eACA,WACA,QACA,YACA,gBACA,cACA,gBACA,aACA,WACA,cACA,eACA,gBACA,cACA,iBACA,kBACA,mBACA,cACA,aACA,cACA,WACA,SACA,WACA,WACA,UACA,UACA,QAEA,eACA,gBACA,eACA,mBACA,oBACA,oBACA,iBACA,cACA,EACA,qDACA,6BACA,kCACA,+BACA,GACC,IAgBD,+CACA,kBACA,oBACA,UAA+B,EAAE,qBACjC,UAAqC,EAAE,4BAA2D,EAAE,gCACpG,iBAAkC,GAClC,WADgD,CAChD,GAAgB,eAAmB,EACnC,SACA,KACA,YACA,yBACA,WACA,eAAuB,+BAA2C,GAElE,QACA,GAEI,GAAQ,UACZ,mBACA,gBACA,2BACQ,eAER,GADA,YACY,EAAE,QACd,OACA,0CACA,OAAoB,GAAO,MAC3B,KACA,6BACA,YAAwB,EAAG,GAAG,EAAG,GAAG,EAAG,GAAG,QAAmB,GAC7D,QACA,KACA,GAAe,EAAI,GAAG,4BAA6C,GACnE,gCACA,CAEA,CACA,CAAK,EACL,UACA,0BAEA,QACA,CACA,EACA,iBAAmC,GACnC,OAD6C,KAC7C,KACA,QACA,cACA,kBACA,gBACA,CACA,MACA,6CACA,CACA,OACA,SACA,KASA,OARI,GAAI,oBACR,MAAmB,EADX,CACwB,MAChC,IADgC,CAChC,oBACQ,EAAE,gBAA8B,KAExC,QAFqD,CAGrD,MACA,CAAK,EACL,UACA,CAEA,iBACA,MACM,GACN,YACA,GAAmB,GACnB,EACA,GAAqB,GAAa,EAJxB,EAImC,GAAgB,GAA3B,GAA2B,GAG7D,CAEA,GAPuB,aAOvB,GACA,MACM,GACN,YACA,GAAmB,GACnB,EACA,GAAqB,GAAa,EAJxB,EAImC,GAAmB,GAA9B,GAA8B,GAGhE,CACA,GANuB,GAEyC,QAIhE,GACA,kBACA,mBAEI,GAAkB,OACtB,CACA,EA8IA,GAAO,EAhJe,IAgJf,EACP,IADO,WACW,0BAAuB,CACzC,wBAA0B,IAC1B,MAAQ,C7BjXc,CACpB,YAAa,EACb,UAAW,WACX,aAAc,WACd,KAAM,SACN,WAAY,WACZ,MAAO,WACP,MAAO,WACP,OAAQ,WACR,MAAO,IACP,eAAgB,WAChB,KAAM,MACN,WAAY,WACZ,MAAO,WACP,UAAW,WACX,YAAa,WACb,UAAW,WACX,WAAY,WACZ,UAAW,WACX,MAAO,WACP,eAAgB,WAChB,SAAU,WACV,QAAS,WACT,KAAM,SACN,SAAU,MACV,SAAU,QACV,cAAe,WACf,SAAU,WACV,UAAW,QACX,SAAU,WACV,UAAW,WACX,YAAa,WACb,eAAgB,WAChB,WAAY,WACZ,WAAY,WACZ,QAAS,WACT,WAAY,WACZ,aAAc,WACd,cAAe,WACf,cAAe,WACf,cAAe,WACf,cAAe,SACf,WAAY,WACZ,SAAU,WACV,YAAa,SACb,QAAS,WACT,QAAS,WACT,WAAY,WACZ,UAAW,WACX,YAAa,WACb,YAAa,WACb,QAAS,WACT,UAAW,WACX,WAAY,WACZ,KAAM,WACN,UAAW,WACX,KAAM,WACN,MAAO,QACP,YAAa,WACb,KAAM,WACN,SAAU,WACV,QAAS,WACT,UAAW,WACX,OAAQ,WACR,MAAO,WACP,MAAO,WACP,SAAU,WACV,cAAe,WACf,UAAW,WACX,aAAc,WACd,UAAW,WACX,WAAY,WACZ,UAAW,WACX,qBAAsB,WACtB,UAAW,WACX,WAAY,WACZ,UAAW,WACX,UAAW,WACX,YAAa,WACb,cAAe,WACf,aAAc,WACd,eAAgB,WAChB,eAAgB,WAChB,eAAgB,WAChB,YAAa,WACb,KAAM,SACN,UAAW,WACX,MAAO,WACP,QAAS,WACT,OAAQ,WACR,iBAAkB,WAClB,WAAY,MACZ,aAAc,WACd,aAAc,WACd,eAAgB,WAChB,gBAAiB,WACjB,kBAAmB,SACnB,gBAAiB,WACjB,gBAAiB,WACjB,aAAc,WACd,UAAW,WACX,UAAW,WACX,SAAU,WACV,YAAa,WACb,KAAM,MACN,QAAS,WACT,MAAO,WACP,UAAW,WACX,OAAQ,WACR,UAAW,WACX,OAAQ,WACR,cAAe,WACf,UAAW,WACX,cAAe,WACf,cAAe,WACf,WAAY,WACZ,UAAW,WACX,KAAM,WACN,KAAM,WACN,KAAM,WACN,WAAY,WACZ,OAAQ,WACR,cAAe,WACf,IAAK,WACL,UAAW,WACX,UAAW,WACX,YAAa,WACb,OAAQ,WACR,WAAY,WACZ,SAAU,WACV,SAAU,WACV,OAAQ,WACR,OAAQ,WACR,QAAS,WACT,UAAW,WACX,UAAW,WACX,UAAW,WACX,KAAM,WACN,YAAa,SACb,UAAW,WACX,IAAK,WACL,KAAM,QACN,QAAS,WACT,OAAQ,WACR,UAAW,WACX,OAAQ,WACR,MAAO,WACP,MAAO,WACP,WAAY,WACZ,OAAQ,WACR,YAAa,UACf,C6B2NA,CAAC,EAOD,QFrEA,IACA,KE8DqB,eF9DrB,SACA,mCACA,yBACA,CAAE,EAAI,IACN,OACA,sBACA,sBACA,mBACA,EACA,MACA,yBAOA,MADA,CAJA,EADQ,EAAG,QACX,qBAEA,wBAEA,wBAAwC,EAAY,GACpD,CACA,EAOA,OANE,GAAS,UACH,EAAG,SACX,UAEA,SACA,CAAG,EACH,CACA,UACA,CACA,GE9GA,CACA,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAEA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,QACA,CASqB,CACrB,oBAvWA,cACA,gCACA,SAEA,4EACA,CACA,YACA,QACA,WACA,YACA,aACA,UACA,KACA,CAAI,EACJ,mBACA,qBACA,kDACA,WAEA,uBACA,GAKA,aAHA,YACA,kBAEA,EACA,4BAlCA,EAmCA,MAlCA,OADA,EAmCA,OAlCA,4BACA,GACA,mCAgCA,IAhCA,kBAgCA,IAhCA,GAgCA,EAhCA,CAEA,cADA,OAgCA,WACA,yBAEA,YAEA,CAEA,kBACA,sBACA,CAAG,EACH,YACA,gBAEA,YACA,gBAEA,YACA,iBAEA,YACA,2BAEA,EAsTA,iCAEA,8BAAwB,oBAAiC,IACzD,CAAC,EACD,SC5Xe,eACf,WACA,cAGA,qCACA,sBACA,+BACA,CAEA,QACA,CCTA,eACA,MAAmB,GAAS,WAC5B,2CACA,CAEA,eACA,MAAmB,GAAS,eAC5B,+CACA,CAEA,eAE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A,mBACA,oBACA,cACA,iCACA,GACA,mBACA,uBACA,CAAiB,CACjB,OAEA,mBAEA,IADA,mBACA,oBACA,cACA,kCACA,GACA,cACA,uBACA,CAAiB,CACjB,MAEA,2CAEA,mBAEA,CAAK,UACL,EAA4B,kBAAW,aAEvC,+BAEA,IAHA,IAGA,QACA,kBACA,iCACA,oCACA,8BACA,GACA,cACA,cACA,CAAa,CACb,MACA,oBACA,iCACA,oCACA,QACA,GAA0C,aAA0B,EACpE,6BACA,GACA,2BACA,cACA,CAAa,CACb,MACA,YACA,mCACA,iCACA,EACA,mCAA+D,aAAwB,EACvF,GACA,YACA,CAAqB,CACrB,CACA,8BACA,QACA,CACA,cACA,qCACA,EACA,CACA,WACA,CAAiB,CACjB,MACA,WACA,kCAEA,WACA,YAEA,WACA,uGAEA,WACA,mDACA,GACA,8CACA,CAAiB,EACjB,kCAGA,0BACA,MAAkC,EAAkB,iBAAmD,GAAkB,WACzH,GACA,CAFyH,IAEzH,eACA,KAAsB,GAAmB,EACzC,CAAa,EACb,WAFyC,MAEzC,iBACA,MACA,0BACA,MAAkC,EAAkB,qBACpD,GACA,oBACA,KAAsB,GAAmB,EACzC,CAAa,EACb,WAFyC,MAEzC,iBACA,KACA,WAEA,OAEA,CAAK,EACL,EACA,aACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAA+B,aAAM,GACrC,aACA,MAAiC,aAAM,IAuBvC,OAtBA,YACI,gBAAS,YAEb,kBACA,YACA,EACA,cACA,YACA,EAMA,OALA,0CACA,qCACA,0CACA,sCACA,CAAS,EACT,WACA,0CACA,qCACA,6CACA,yCACA,CAAa,CACb,CACA,CAAK,MACO,UAAG,KAAgB,wDAA2F,CAC1H,EACA,eACA,IN7RA,EACA,QACA,EAAqB,IAMrB,EAAqB,IACrB,EAAqB,IAKrB,EACA,EACA,EAAqB,IACrB,EAAqB,IAKrB,EACA,EACA,ED3BA,EACA,EACA,EO8RA,2DACA,GN7RA,GADA,EM8RuB,CACvB,MADuB,CACvB,EACA,yBACA,OACA,kCACA,MACA,CAAS,CACT,oBACA,OACA,mCACA,MACA,CAAS,CACT,UACA,CAAK,EN1SL,mDACqB,GAArB,EAAa,eAAQ,kBACjB,gBAAS,YACb,0CACA,kCACA,CAAS,CACT,CAAK,MACgB,GAArB,EAAa,eAAQ,gBACA,GAArB,EAAa,eAAQ,gBAKrB,EAAmC,aAAM,GACzC,EAA8B,aAAM,GACf,GAArB,EAAa,eAAQ,gBACA,GAArB,EAAa,eAAQ,gBAKrB,EAAsC,aAAM,GAC5C,EAAiC,aAAM,GACvC,EAA0B,kBAAW,eACrC,sCACA,+BACA,SAEA,gCACA,8BACA,8BACA,SACA,UACA,IACA,WACA,wBAEA,WACA,wBACA,cAA+D,YAAsB,GAGrF,MAEA,MACA,uCACA,KACA,CAAa,CAnDb,KAoDA,uCACA,gBACA,CAAa,CArDb,MAuDA,SACA,UACA,IACA,WACA,wBAEA,WACA,wBACA,cAA0D,YAAsB,GAGhF,MAEA,MACA,uCACA,KACA,CAAa,CAxEb,KAyEA,uCACA,gBACA,CAAa,CA1Eb,MA4EA,CAAK,UD7EL,EAAuB,aAAM,KAC7B,EAAwB,aAAM,GAC9B,EAA0B,aAAM,GAC5B,gBAAS,YACb,GC0EgB,MDjDhB,OCiDgB,EDrDhB,iCACA,WACA,UACA,CAAS,EACT,WACA,OCgDgB,EDhDhB,sCACA,EAzBA,cACA,WACA,aACA,WACA,+BAEA,YCkEgB,EDjEhB,aACA,oBAIA,aACA,YACA,uCACA,YACA,CAAiB,MAEjB,CAQA,CAAK,EC8CW,MD9CX,ECiDL,CACA,sBACA,oBAJA,mBAKA,iBACA,eALA,kBAMA,GMwNK,sFACL,MAAY,WAAI,CAAC,WAAQ,EAAI,UAAW,UAAG,KAAgB,oDAAgG,EAAG,UAAG,KAAgB,8CAAgF,GAAI,CACrQ,EC9SA,eACA,IhCYA,EgCZA,QhCYmC,IgCZnC,cACA,MAAY,UAAG,CAAC,EAAa,CAAE,GAAQ,CAAG,MhCWP,CACnC,MACA,EgCbyD,MAAlB,ChCavC,CAFA,EgCX0D,GAAS,GAAQ,EAAG,CAAE,IAAM,CAAK,CAAL,GAAK,GAAiB,GAAM,CAAhD,EAAgD,CAAvC,GhCa3E,KACA,gBACA,eACA,CAAK,CACL,QACA,SACA,2BACA,uBACA,mBACS,CACT,WACA,qBACA,2BACA,uBACS,CACT,UACA,YACA,kBACA,2BACA,uBACS,CACT,mBACA,YACA,qBACA,2BACA,cACA,sBACA,CAAS,CACT,eACA,YACA,yBACA,2BACA,cACA,uBACS,CACJ,CACL,UAAgB,wCAA6D,CAC7E,WAAiB,0BAAwC,CACzD,QAAc,qBAA4B,CAC1C,kBACA,WACA,qBACA,0BACK,CACL,YACA,qBACK,CACL,QACA,kBACA,iBACA,sBACA,iBACA,QACA,MACA,mBACA,iBACA,iBACA,iBACA,gBACA,YACa,CACb,0BACS,CACT,QACA,MAAoB,gCAA8C,CAClE,iBACA,wBACA,qBACA,4BACS,CACT,MACA,0BACA,kBACA,sBACS,CACJ,CACL,aACA,kBACA,iBACA,sBACK,CACL,UACA,OACA,eACS,CACJ,CACL,SACA,mBACA,iBACK,CgCtGmH,CAAI,EAAI,WAAoB,EACpJ,ECRA,SAAS,GAAC,GAAI,UAAJ,EAAI,GAAe,GAAC,kBAAqB,GAAC,uCAAwC,sFAAqF,kCAAkC,2BAA2B,GAAC,qEAAsE,yBAAyB,gBAAgB,uJAAsJ,UAA4X,eAAc,eAAmO,2DAA2D,OAA/Q,SAAU,KAAM,CAA8Q,EAA9Q,QAAN,EAAM,IAA+Q,EAAgC,CAA/S,0CAA6D,oBAAmB,YAAa,IAAI,kBAAhgB,SAAS,CAAC,EAAI,IAAkK,EAAlK,OAAJ,IAAI,6BAA4C,mBAAmB,YAAa,gBAAe,KAAM,eAAc,KAAM,0CAAyC,IAAI,SAAwK,CAArJ,uDAA6D,iDAAiD,mCAAmC,EAAI,CAAI,CAAJ,KAAI,GAAS,eAA8K,kBAAmB,SAAS,sDCiB7iC,IAAI,GAAQ,WAQZ,IARY,EAQH,CAPP,GAAQ,cAOO,CAPP,YACV,iCAA+C,IAAO,IAEtD,aADA,eACA,uDAEA,QACA,GACiB,qBACjB,EAEA,SAAS,GAAS,SAElB,OAFkB,GAElB,+BACA,cAAkC,IAAM,aAA+B,SAAY,MACnF,cAAiC,IAAM,cAAmC,SAAY,MACtF,kBAJA,EAI8B,kBAJJ,EAA1B,EAI8B,OAJJ,kCAA+D,MAAiB,EAI5E,UAC9B,8BACA,CAAG,CACH,CAEA,SAAS,GAAW,KACpB,IAAsG,QAAtG,CADoB,CACpB,CAAY,wBAA6B,qBAA0B,YAAc,gBAAqB,CACtG,UAAe,iCAAoD,2DAAqE,aAAc,GACtJ,cAAqB,mBAAsB,gBAC3C,GACA,wDACA,iCACA,kHAEA,OADA,4BACA,MACA,kBAAsC,KACtC,QAAiC,OAAjC,UAAiC,CAAS,mBAC1C,kBAAiC,OAAW,MAAU,QACtD,sBAAwC,aAAc,QACtD,SACA,kEAA4G,IAAO,SACnH,yCAA+E,aAAiB,MAChG,2BAAuD,aAAgB,IAAQ,MAC/E,oBAA6C,aAAgB,cAAgB,MAC7E,kBACA,aAAgC,QAChC,CACA,aACA,CAAQ,SAAY,QAAa,KAAS,OAAU,MACpD,qBAAkC,OAAS,+BAC3C,EAtB2C,QAuB3C,CAEA,oDAKA,IAAI,GAAkB,YACtB,eADsB,EACtB,yCACA,OAAW,GAAS,GAAQ,CAAG,WAAZ,GAAS,MAAG,CAAuB,sBAA6B,8CAAoF,CACvK,EACA,eACA,2CAGA,QACA,KACA,6BAAsC,SAAS,EAAE,SAAS,cAAc,UAAU,EAClF,6BAAsC,UAAU,YAAY,SAAS,0BAA0B,SAAS,EACxG,aAAsB,SAAS,EAAE,SAAS,cAAc,UAAU,mBAAmB,gBAAgB,CACrG,CAAK,CACL,MACA,gBACA,iBAA0B,UAAU,EACpC,aAAsB,UAAU,CAChC,CAAK,EAEL,cACA,cACA,WAuFA,GAtFA,sBACA,uBACA,kBACA,sBACA,mBACA,sBAAmC,OAAO,GAAS,2BACnD,OAAmB,GAAW,uBAC9B,yBAGA,qBACA,yBAHA,IAKa,CACb,CAAS,GACT,6BAA0C,OAAO,GAAS,2BAC1D,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OACA,0BACA,UAEA,yCACA,EAEA,OADA,SACA,GACA,CACA,CAAa,CACb,CAAS,GACT,qBAAkC,OAAO,GAAS,2BAClD,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OACA,0BACA,UAIA,OAFA,qBACA,uBACA,qBAAiE,oBAAsB,QACvF,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,GACT,qBAAkD,OAAO,GAAS,2BAClE,MACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OACA,0BACA,UAQA,OANA,qBACA,uBACA,GAAoC,qBACpC,oBACA,2BAEA,6BACA,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,GACT,sBAAmC,OAAO,GAAS,2BACnD,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAGA,OAFA,qBACA,uBACA,qBAAiE,oBAAsB,QACvF,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,GACT,kCACA,eACA,kCACA,EACA,4BACA,OACA,EACA,iBACA,0CAEA,sCACA,eACA,sBACA,mBACA,mBACA,CAwLA,OAvLA,oDACA,eACA,QACA,CAAS,CACT,cACA,eACA,CAAK,EACL,oCACA,qBACA,2BAEA,iBACA,6CACA,8CAEA,EACA,gCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAE9B,CAF8B,MAC9B,kBACA,IACa,CACb,CAAS,CACT,EACA,mCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,wCACA,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,+BACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAQ9B,CAR8B,MAC9B,kBACA,sCACA,8CACA,6CACA,wCACA,uDACA,uCACA,IACa,CACb,CAAS,CACT,EACA,iCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAOA,OANA,yCACA,iDACA,gDACA,2CACA,0DACA,0CACA,2BACA,EAEA,OADA,SACA,GACA,CACA,CAAa,CACb,CAAS,CACT,EACA,kCACA,kBACA,sBACA,kBACA,EACA,kCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAIA,OAHA,GACA,wBAEA,qBACA,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,+BACA,OAAe,GAAS,8BACxB,MACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OACA,+CACA,aAUA,GARA,KACA,iDACA,OAEA,gBACA,gDACA,OAEA,eACA,SACA,QAEA,OADA,sBACA,qBACA,EAEA,OADA,SACA,WACA,EAGA,OAFA,oBACA,kBACA,SACA,eAEA,CAAa,CACb,CAAS,CACT,EACA,+BACA,OAAe,GAAS,8BACxB,UACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAEA,IADA,4BAEA,UAiBA,GAhBA,EAAkC,GAAQ,EAAG,aAAH,OAAG,EAC7C,iBACA,wCAEA,8CACA,oDAGA,aAEA,GACA,GAAsC,GAAS,GAAQ,EAAG,QAE1D,KAFuD,MAEvD,GAAoD,YAAY,iBAChE,gCACA,CAAyB,EACzB,+BAEA,OADA,wEAAuG,GACvG,IAEA,wDACA,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,wCACA,WACA,2CAGA,iBACA,2CACA,iBACA,GACA,CAAa,sBACb,EACA,IACA,EACA,uCACA,mBACA,sCACA,sBAEA,EACA,0CACA,kBACA,EACA,CACA,CAAC,GAED,cACA,cAEA,gBACA,IAFA,EAEA,EAAsB,GAAS,EAC/B,SAD+B,WAC/B,kCACA,MACA,mDAGA,yBAEA,CA4BA,OA1BA,mCACA,0BACA,oBACA,YAKA,QAHA,OACA,OACA,0BAA4D,GAC5D,IAA0C,EAA1C,EAA0C,OAAqB,KAE/D,MAFA,CACA,IACA,yBACA,gBACA,IAEA,kBACA,kBAEA,QACA,kBACA,KAEA,CACA,YACA,iBACA,CACA,EACA,CACA,CAAC,GAED,eACA,iBACA,+BACA,+BACA,OAAmB,GAAkB,CACrC,gBACA,UAFqC,CAErC,SACA,wBACa,CACb,8BACA,OAAmB,GAAkB,CACrC,gBACA,UAFqC,CAErC,YACA,CAAa,CACb,SACA,OAAmB,GAAkB,CAAG,gBAAyB,CACjE,CACA,EACA,MAHqC,QAIrC,gBACA,UACA,uBACA,sBAAmC,OAAO,GAAS,2BACnD,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,kCACA,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,GACT,qBAAkC,OAAO,GAAS,2BAClD,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAQA,GAPA,iBACA,uBAEA,sBACA,yCACA,4BAEA,sBACA,UAEA,SACA,QAEA,OADA,sBACA,8DACA,QAIA,OADA,OAFA,SACA,0BACA,KAKA,kBAEA,CAAa,CACb,CAAS,GACT,+BACA,mBACA,+BACA,eACA,4BACA,0BACA,kBACA,eAEA,cACA,sCAEA,CA4XA,OA3XA,oDACA,eACA,QACA,OACA,wGACA,CACA,CAAS,CACT,cACA,eACA,CAAK,EACL,yCACA,WACA,mBACA,0BACA,gBACA,kBACA,MACA,CACA,cAGA,oBACA,wFACA,wCACA,kDAA8D,OAAO,GAAS,+BAC9E,IACA,IACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAEA,OADA,sBACA,8BACA,EAcA,OAZA,OADA,aAEA,oBAGA,kBACA,0BACA,kBACA,yGAEA,wDACA,4CAEA,KACA,QAMA,OAHA,GADA,EADA,WAGA,4CAEA,WACA,YAEA,CAAa,CACb,CAAS,EAAI,GACb,EACA,wCACA,MAEA,OADA,aAAoC,MACrB,GAAS,8BACxB,YACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,0IACA,cACA,SACA,0BAC6B,CAC7B,sBAAmD,CACnD,CAAyB,QACzB,EAEA,IADA,aACA,eACA,wBACA,EAIA,OAHA,iBAEA,EADA,0DACA,2BACA,uBACA,EACA,8BACA,wBACA,EAEA,SADA,SAEA,iDACA,CACA,CAAa,CACb,CAAS,CACT,EACA,uCACA,MAEA,OADA,aAAoC,MACrB,GAAS,8BACxB,YACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,yIACA,cACA,SACA,yBACA,CAA6B,CAC7B,sBAAmD,CACnD,CAAyB,QACzB,EAEA,IADA,aACA,eACA,wBACA,EAIA,OAHA,iBAEA,EADA,0DACA,2BACA,uBACA,EACA,8BACA,wBACA,EAEA,SADA,SAEA,QAEA,eAEA,CAAa,CACb,CAAS,CACT,EACA,uCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OACA,KAIA,OAHA,yIAAwK,qBAA+B,IACvM,uBACA,CAA6B,GAC7B,IAEA,0GACA,cACA,SACA,iCACA,CAAiC,CACjC,qBAAuD,qBAA+B,CACtF,CAA6B,QAC7B,EAEA,OADA,SACA,GACA,CACA,CAAa,CACb,CAAS,CACT,EACA,kCACA,OAAe,GAAS,8BACxB,YACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAEA,OADA,iCACA,sDACA,EAOA,OANA,yBACA,uBACA,eACA,kBACA,yBACA,gDACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,kCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAIA,OAHA,GACA,wBAEA,eACA,QAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EAIA,gCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,wCACA,EAEA,GADA,SACA,6BACA,0CACA,EACA,SACA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EAIA,mCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,wCACA,EAEA,GADA,SACA,6BACA,6CACA,EACA,SACA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EAKA,+BACA,OAAe,GAAS,8BACxB,MACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OAEA,uCACA,SACA,QAEA,OADA,sBACA,2BACA,EAEA,OADA,SACA,KACA,QAMA,OAHA,GADA,EADA,WAGA,4CAEA,WACA,EACA,gCACA,yCACA,EACA,SACA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EAKA,iCACA,OAAe,GAAS,8BACxB,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,wCACA,EAGA,GAFA,SACA,0CACA,6BACA,2CACA,EACA,SACA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EACA,+BACA,OAAe,GAAS,8BACxB,UACA,OAAmB,GAAW,iBAC9B,CAD8B,MAC9B,SACA,OACA,mBACA,aAEA,sBACA,mBACA,gCACA,QAC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DAA+H,CACpU,gBAAmB,KAAa,mJACpD,SACA,iEAAiJ,EAC7H,gBAAmB,CAAC,GAAkB,KAClC,UADkC,MACf,CAAC,GAAoB,CAAI,gBAAJ,KAAI,aAAqE,EACjH,gBAAmB,CAAC,GAAoB,CAAI,gBAAJ,MAAI,EAAiD,IANxF,gBAAmB,CAAC,GAAgB,CAAI,QAAY,EAOjE,EAPiD,CAOjD,aAAmB,QAAU,iBAAmB,IAChE,+BCliBA,IAAsB,QAEtB,YACA,eACA,oCACA,qDACA,CAAC,GAAmB,IAAsB,GAAK,IAAsB,IAAK,EAC1E,IANA,EAMA,aACA,cACA,+CAWA,GAVA,gBACA,kBACA,mBACA,aACA,aACA,gBACA,oBACA,0BACA,kBACA,WACA,UACA,iDAEA,4BACA,uDAOA,mBACA,uBACA,uBACA,CAwOA,OAlOA,mCACA,sBAMA,sCACA,yBAMA,qCACA,wBAMA,qCACA,wBACA,EAKA,oCACA,sCAOA,gDACA,kBACA,2BACA,KACA,sBACA,WAEA,mDAOA,iCACA,MACA,+CACA,SAEA,8BACA,6BACA,2BACA,sBACA,SAEA,qFACA,aACA,SAEA,yCAA6D,WAC7D,CACA,2DACA,EAQA,mDACA,aAAkC,MAClC,gCAOA,GANA,cACA,eAEA,cACA,eAEA,uCACA,yDACA,4DAGA,IAFA,oDACA,uCACA,QACA,2CACA,KACA,IACA,MAEA,KACA,QAGA,sBACA,sCAEA,qBACA,CACA,2CACA,kCACA,qBACA,KAEA,CACA,CACA,2BAKA,4BACA,WACA,gBACA,iBACA,QACA,sBAEA,yDACA,CAAS,EACT,iBACA,0BACA,CAAS,EACT,kBACA,oBACA,CAAS,CACT,EAEA,uCACA,OACA,8CACA,MACA,CACA,mBACA,iBACA,4DAGA,kCACA,mCACA,sBAEA,wCACA,8CACA,MACA,CAEA,WACA,uDACA,MACA,CAEA,aACA,8CACA,MACA,CAGA,GAFA,gBAEA,OACA,4BAEA,CACA,oDACA,MACA,CAEA,uBAEA,WAKA,GAJA,KACA,gBAGA,SAEA,yBAEA,CACA,uEACA,MACA,CAMA,GAJA,qBACA,sBAGA,oBACA,mBACA,oBACA,mBACA,+CACA,MACA,CAGA,GADA,4CACA,GACA,qDACA,MACA,CAEA,gDACA,kEACA,wBACA,EACA,2DACA,kBACA,2BACA,KACA,sBACA,WAEA,uCAGA,8CACA,2CAGA,wCAFA,IAGA,EACA,CACA,CAAC,GACD,IAAe,qCE9Qf,mBDCA,MAAe,CAAE,WADjB,6EACiB,CAAY,CCA7B,CDA8B,CCA9B,mBCAA,KACA,YAAgB,MAAS,IACzB,sCCiBA,MAjBA,gBACA,EAgBiB,CAhBT,CAgBU,CAhBJ,mBACd,OAAe,EAAM,aAGrB,GAHqB,CAGrB,EADA,UACA,gBFNe,EEMoC,SFLnD,OACA,uDACA,wHAEA,qCACA,CACA,WACA,CEFmD,CAAG,GAGtD,GAFA,gBACA,iBACA,GACA,OACA,YAAwB,KAAQ,IAChC,YAEA,QACA,CACA,OAAW,SDbJ,MCamB,CDZ1B,iBACA,UACA,UACA,UACA,IACA,UACA,UACA,IACA,UACA,UACA,IACA,UACA,UACA,IACA,WACA,WACA,WACA,WACA,WACA,yBACA,ECR0B,EAC1B,ECjBA,cACA,yBAkBA,iBAQA,MAPA,8BACA,iCAA+C,IAAO,IAEtD,aADA,eACA,uDAEA,QACA,GACA,qBACA,EAEA,oBAEA,yCACA,cAAkC,IAAM,aAA+B,SAAY,MACnF,cAAiC,IAAM,cAAmC,SAAY,MACtF,kBAJA,EAI8B,kBAJJ,EAA1B,EAI8B,mBAJJ,sBAA+D,MAAiB,EAI5E,UAC9B,8BACA,CAAG,CACH,CAEA,gBACA,IAAsG,QAAtG,GAAY,wBAA6B,qBAA0B,YAAc,gBAAqB,CACtG,UAAe,iCAAoD,2DAAqE,aAAc,GACtJ,cAAqB,mBAAsB,gBAC3C,GACA,wDACA,iCACA,kHAEA,OADA,4BACA,MACA,kBAAsC,KACtC,QAAiC,OAAjC,UAAiC,CAAS,mBAC1C,kBAAiC,OAAW,MAAU,QACtD,sBAAwC,aAAc,QACtD,SACA,kEAA4G,IAAO,SACnH,yCAA+E,aAAiB,MAChG,2BAAuD,aAAgB,IAAQ,MAC/E,oBAA6C,aAAgB,cAAgB,MAC7E,kBACA,aAAgC,QAChC,CACA,aACA,CAAQ,SAAY,QAAa,KAAS,OAAU,MACpD,qBAAkC,OAAS,+BAC3C,EAtB2C,QAuB3C,CAEA,oDAYA,iBACA,cAcA,GAbA,gBACA,yBACA,mBACA,cACA,kBACA,kBACA,kBACA,eACA,YACA,mBACA,sBACA,SACA,EACA,QACA,+BAEA,kBACA,uBACA,6BACA,uCAEA,oCACA,qDAEA,8BACA,yCAEA,YACA,4DAEA,WACA,wBAEA,CA8PA,OA7PA,oCACA,YACA,gCAEA,oBAA4C,kBAC5C,EACA,6BACA,mBACA,YACA,mDAEA,MACA,CACA,qBACA,YACA,yCAEA,iBACA,EACA,+CACA,eACA,6BACS,CACT,cACA,eACA,CAAK,EACL,oCAEA,OADA,YAAkC,IAAY,gBAC9C,gCACA,MACA,0BACA,gBACA,OAEA,GADA,wBACA,gBAEA,OADA,uBACA,IAEA,4CACA,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,0CAEA,OADA,aAAkC,GAAY,gBAC9C,oCACA,EACA,EACA,0BACA,gBACA,OAEA,GADA,4BACA,gBAEA,MADA,mCACA,IAEA,sCACA,QAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,gDACA,eACA,OACA,iCACA,+CACA,uDACA,4BAEA,CAAS,CACT,cACA,eACA,CAAK,EACL,sCACA,UACA,OACA,kBACA,cACA,8CACA,0DACA,2CAA8E,IAC9E,UADgF,EAChF,UAEA,EACA,kCACA,0BAEA,qDACA,2BACA,EACA,6CAEA,OADA,aAAkC,GAAY,gBAC9C,gCACA,QACA,0BACA,gBACA,OAYA,GAXA,wEACA,0BACA,uCAEA,GACA,oBACA,kBACA,sBACA,mBACA,mBAEA,0BACA,6CACA,EAEA,OADA,SACA,KACA,oDACA,EACA,SACA,SACA,iBACA,CACA,CAAa,CACb,CAAS,CACT,EACA,6CAEA,OADA,aAAkC,GAAY,gBAC9C,gCACA,QACA,0BACA,gBACA,OAUA,GATA,iCACA,0BACA,uCAEA,GACA,oBACA,kBACA,yBAAkE,UAAmB,2FAAyH,cAAsB,CACpO,EACA,0BACA,6CACA,EAEA,OADA,SACA,WACA,8CACA,EACA,SACA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EACA,+CAEA,OADA,aAAqC,KACrC,gCAEA,IADA,QACA,OACA,0BACA,gBACA,OACA,MACA,+BAEA,YACA,uEAEA,sBACA,KACA,SACA,QAEA,OADA,sBACA,iBACA,SACA,cACA,SACA,iCACA,CAAqC,CACrC,uBACA,sBACA,gBACiC,EACjC,0BACA,6BACA,mBACA,mBACA,CAAqC,aACrC,CAAiC,EACjC,QACA,EAaA,MAZA,aACA,GAOA,YACA,sCAPA,YACA,8CAEA,4BAOA,WACA,EAMA,OALA,WACA,YACA,sCAEA,KACA,WACA,MAlQA,EAmQA,kBACA,kCACA,yCACA,UAtQA,EAsQA,IAtQ4B,CAsQ5B,gBAtQ4B,kCAC5B,0BACA,iCAA+D,uBAAiC,GAC3F,CACL,CAAC,GAkQD,MACA,EACA,SACA,SACA,wDACA,0BACA,EACA,YACA,oDAEA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EACA,8CACA,uCACA,MACA,0BAWA,OAVA,MACA,+BAEA,YACA,sDAEA,gCACA,uBACA,CAAiB,EACjB,0BACA,IACa,CACb,CAAS,CACT,EACA,CACA,CAAC,2BC7VD,IAOA,EAPA,wCACA,gCACA,QACA,gBACA,2CACA,EAIA,EADA,gCACA,UACE,6BACF,YACA,qCACA,uCACA,EAEA,YACA,oCACA,EAOA,gCACA,WACA,EAEA,aACA,iBACA,CACA,YACA,cAAmB,CAwYnB,cACA,qCAoBA,EAnBA,cACA,sBACA,IACA,CAEA,aACA,qCACA,4BAEA,2BACA,CAEA,SAA8D,QAAY,EAC1E,cAMA,EALA,CAA8D,QAAY,CAM1E,mBANA,EAMA,IACA,EAPA,EAOA,QAPA,EAOA,GALA,CAAG,CACH,EAxZA,iBAEA,2BACA,2BACA,iCAIA,SAEA,cACA,wBACA,4FAEA,CAoCA,qBACA,yBACA,sBACA,gBAmDA,oBAyBA,GApBA,KAGA,SADA,eAEA,gCACA,mBAIA,yBACA,uBACA,yBAIA,aAEA,QAGA,WAEA,SACA,sBAeA,GAbA,qBAEA,OACA,cAEM,EACN,aAEA,UAIA,SACA,0BACA,YAGA,IA9CA,EACA,EACA,EA4CA,uDACA,uBADA,oEAIA,sCACA,YACA,SACA,iBA5KA,oCA6KA,EACA,CAGA,QACA,CAaA,aACA,qBAGA,CAFA,kDACA,cACA,qBACA,gCACA,0CAEA,CAEA,kBACA,OAAgB,mDAChB,YAGA,OAFA,aACA,WACA,CACA,CAyHA,kBACA,gBAEA,cACA,SAEA,kBACA,WACA,GAEA,qBACA,sBAEA,EAsDA,YAEA,QADA,kBACA,IAAkB,WAAgB,IAClC,yBAEA,QACA,EA3DA,gBACA,CAmBA,cACA,mBAEA,eACA,WAEA,wBACA,SACM,cACN,gBAIA,QACA,CAMA,gBAEA,QADA,WACA,IAAkB,IAAO,IACzB,UACA,QACA,CA2CA,oBACA,2BACA,OACA,YAEA,eAEI,yCAGJ,mCAGA,QACA,2BAEA,IACA,CAAK,OAEL,+FAEA,CAraA,+CACA,cACA,eACA,QACA,CAAG,CACH,gBACA,iCACA,0HAEA,GACA,CACA,CAAC,EAED,kBAEA,wBACA,sDACA,iCACA,qBAGA,6CACA,EAIA,wCACA,iCACA,wGAGA,OADA,qBACA,MASA,uCACA,cACA,EAEA,6BAEA,QADA,KACA,IAAkB,mBAAsB,yBADxC,IAEA,cAEA,eACA,cACA,2BACA,MACA,SAGA,MAIA,GAFA,YACA,SACA,mBAGA,QAGA,EAHgB,EANhB,EASA,qDAEA,OADA,YACA,CACA,CAEA,GAHe,CAGf,OAEA,cACA,SAEA,wBACA,iBAIA,QAFA,WACA,SACA,IAAoB,IAAS,IAC7B,eAGA,QACA,EAgEA,sCACA,qBACA,EAEA,uCAEA,4BACA,cACA,qBACA,EAoBA,+BAGA,OAFA,KACA,uBACA,MAGA,gCACA,cAGA,OAFA,KACA,oCACA,MAIA,2BACA,cACA,cAKA,GAHA,KAGA,SADA,kBAKA,SADA,SAFA,YAMA,yBACA,uBACA,kCAEA,YACA,kBACA,kDAEQ,yBAGR,IAFA,KAEA,aAAkC,KAAQ,IAC1C,gCACA,gBACA,IACA,KACA,CAGA,OACA,YAEA,MACA,UAEA,SA+HA,KACA,KAAS,aAAyB,IAClC,YACA,OACA,EAnIA,KAGA,cACA,YAEA,2BACA,kCACA,CAEA,aAGA,2CAEA,+BACA,YACA,UAGA,YADA,iBAEA,YAGA,6BAUA,OATA,qBACA,iCACA,qBACU,gBACV,uBACA,iCAEA,aAEA,KAIA,wBACA,IACA,EADA,iBAEA,QAAoB,WAAiB,IAErC,mBADA,UAEA,2BAKA,OAHA,0CACA,iCACA,oBACA,KAKA,qBAFA,SAGA,8BACQ,cAER,iBAAuC,KAAQ,IAC/C,4BAIA,aAoBA,kCACA,mBACA,EAEA,qCACA,mBACA,EAEA,oCACA,mCACA,mBAEA,WAEA,EAEA,4BAiBA,kCACA,0DCtaA,4BACA,6BAEA,cACA,UAGA,SACA,SAGA,kDACA,SAGA,qBACA,iBAEA,uBACA,SAMA,QAHA,0CAGA,IAAoB,WAAoB,KACxC,WAEA,SACA,SAGA,WACA,OAIA,QAFA,8BAEA,kBACA,QAEA,CAEA,QACA","sources":["webpack://_N_E/../../node_modules/@u-next/videoplayer/dist/videoplayer.esm.js","webpack://_N_E/../../node_modules/styled-components/node_modules/tslib/tslib.es6.mjs","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Enum.js","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Utility.js","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Tokenizer.js","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Serializer.js","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Prefixer.js","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Middleware.js","webpack://_N_E/../../node_modules/styled-components/node_modules/stylis/src/Parser.js","webpack://_N_E/../../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://_N_E/../../node_modules/styled-components/dist/styled-components.browser.esm.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/styles/stackOrder.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/tslib.es6-3868aa2e.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/styles/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useUIDisplayTimer.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useDeviceInfo.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/usePageVisibilityChange.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/contexts/ContainerSizeContext/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useContainerSize.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/contexts/ContainerSizeContext/ContainerSizeContextProvider.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/StartPlayOverlay/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/play.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/StartPlayOverlay/index.es.js","webpack://_N_E/../../node_modules/just-throttle/index.mjs","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/PointerEventArea/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/PointerEventArea/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/LoadingIndicator/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/loading_animation.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/LoadingIndicator/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useEventCallback.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useLocalStorage.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/contexts/UserPlayerSetting/UserPlayerSettingContext.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/playback_rate.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/DialogButton/styles.es.js","webpack://_N_E/../../node_modules/@react-spring/rafz/dist/react-spring_rafz.modern.mjs","webpack://_N_E/../src/globals.ts","webpack://_N_E/../src/helpers.ts","webpack://_N_E/../src/FrameLoop.ts","webpack://_N_E/../src/clamp.ts","webpack://_N_E/../src/colors.ts","webpack://_N_E/../src/colorMatchers.ts","webpack://_N_E/../src/normalizeColor.ts","webpack://_N_E/../src/colorToRgba.ts","webpack://_N_E/../src/createInterpolator.ts","webpack://_N_E/../src/easings.ts","webpack://_N_E/../src/fluids.ts","webpack://_N_E/../src/regexs.ts","webpack://_N_E/../src/variableToRgba.ts","webpack://_N_E/../src/stringInterpolation.ts","webpack://_N_E/../src/deprecations.ts","webpack://_N_E/../src/isAnimatedString.ts","webpack://_N_E/../src/dom-events/scroll/index.ts","webpack://_N_E/../src/dom-events/resize/resizeElement.ts","webpack://_N_E/../src/dom-events/resize/resizeWindow.ts","webpack://_N_E/../src/dom-events/resize/index.ts","webpack://_N_E/../src/progress.ts","webpack://_N_E/../src/dom-events/scroll/ScrollHandler.ts","webpack://_N_E/../src/hooks/useConstant.ts","webpack://_N_E/../src/hooks/useForceUpdate.ts","webpack://_N_E/../src/hooks/useIsMounted.ts","webpack://_N_E/../src/hooks/useIsomorphicLayoutEffect.ts","webpack://_N_E/../src/hooks/useMemoOne.ts","webpack://_N_E/../src/hooks/useOnce.ts","webpack://_N_E/../src/hooks/usePrev.ts","webpack://_N_E/../src/hooks/useReducedMotion.ts","webpack://_N_E/../src/index.ts","webpack://_N_E/../../node_modules/@react-spring/animated/dist/react-spring_animated.modern.mjs","webpack://_N_E/../../node_modules/@react-spring/core/dist/react-spring_core.modern.mjs","webpack://_N_E/../../node_modules/@react-spring/web/dist/react-spring_web.modern.mjs","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/math.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/enums.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/debounce.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/createPopper.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/utils/within.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://_N_E/../../node_modules/@popperjs/core/lib/popper.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Dialog/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/styles/theme.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/MobileDialog/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/MobileDialog/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Button/Button.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/replay.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/close.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/NextPlayable/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/next_episode.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Button/NextPlayableButton.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/utils/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/SceneSearch/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useSceneImages.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useEffectButSkipFirstRender.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/sub.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/setting.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/half_arrow_down.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/episode.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/dub.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/check.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/camera.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/DialogButton/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/DialogButton/PlaybackRateButton/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/usePlayerOptions.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/usePinP.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useDoubleTap.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useGesture.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/volume.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/rewind.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/pause.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/mute.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/fast_forward.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ControlHint/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ContextWrapper/index.es.js","webpack://_N_E/../../node_modules/jwt-decode/build/jwt-decode.esm.js","webpack://_N_E/../../node_modules/@u-next/babystar-session/dist/session.esm.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Volume/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Volume/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ShortcutTable/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/help.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ShortcutTable/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/SceneSearch/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/SceneSearch/container.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/hooks/useDynamicSeekRange.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ProgressBar/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ProgressBar/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/ProgressBar/container.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/PlayerOverlay/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/PlayerOverlay/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/PlayPauseClickArea/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/p_in_p.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/PinP/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Layout/styles.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Layout/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/fullscreen_on.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/fullscreen_off.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Fullscreen/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/CameraList/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Button/SeekButton.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Button/PlayPauseButton.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/components/Button/index.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/10s_forward.es.js","webpack://_N_E/../../node_modules/@u-next/babystar-shared/dist/assets/icons/10s_backward.es.js","webpack://_N_E/../../node_modules/@u-next/defaultplayer/dist/defaultplayer.esm.js","webpack://_N_E/../../node_modules/@u-next/ims-parser/dist/index.js","webpack://_N_E/../../node_modules/@u-next/superflow-web/node_modules/uuid/dist/esm-browser/native.js","webpack://_N_E/../../node_modules/@u-next/superflow-web/node_modules/uuid/dist/esm-browser/rng.js","webpack://_N_E/../../node_modules/@u-next/superflow-web/node_modules/uuid/dist/esm-browser/stringify.js","webpack://_N_E/../../node_modules/@u-next/superflow-web/node_modules/uuid/dist/esm-browser/v4.js","webpack://_N_E/../../node_modules/@u-next/superflow-web/dist/index.esm.js","webpack://_N_E/../../node_modules/events/events.js","webpack://_N_E/../../node_modules/shallowequal/index.js"],"sourcesContent":["export { j as UVideoPlayer, U as UVideoPlayerSceneSearcher, g as isDrmType, h as isPlaybackError, i as isStreamFormat } from './videoplayer-b13b17b6.esm.js';\nimport 'events';\nimport '@u-next/ims-parser';\nimport 'bowser';\nimport '@u-next/superflow-web';\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW9wbGF5ZXIuZXNtLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OzsifQ==\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 */\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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\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;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\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};\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import{__spreadArray as e,__assign as t}from\"tslib\";import n from\"@emotion/is-prop-valid\";import o,{useRef as r,useState as s,useMemo as i,useEffect as a,useContext as c,useDebugValue as l,createElement as u}from\"react\";import p from\"shallowequal\";import*as d from\"stylis\";import h from\"@emotion/unitless\";var f=\"undefined\"!=typeof process&&void 0!==process.env&&(process.env.REACT_APP_SC_ATTR||process.env.SC_ATTR)||\"data-styled\",m=\"active\",y=\"data-styled-version\",v=\"6.1.13\",g=\"/*!sc*/\\n\",S=\"undefined\"!=typeof window&&\"HTMLElement\"in window,w=Boolean(\"boolean\"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:\"undefined\"!=typeof process&&void 0!==process.env&&void 0!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&\"\"!==process.env.REACT_APP_SC_DISABLE_SPEEDY?\"false\"!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&process.env.REACT_APP_SC_DISABLE_SPEEDY:\"undefined\"!=typeof process&&void 0!==process.env&&void 0!==process.env.SC_DISABLE_SPEEDY&&\"\"!==process.env.SC_DISABLE_SPEEDY?\"false\"!==process.env.SC_DISABLE_SPEEDY&&process.env.SC_DISABLE_SPEEDY:\"production\"!==process.env.NODE_ENV),b={},E=/invalid hook call/i,N=new Set,P=function(t,n){if(\"production\"!==process.env.NODE_ENV){var o=n?' with the id of \"'.concat(n,'\"'):\"\",s=\"The component \".concat(t).concat(o,\" has been created dynamically.\\n\")+\"You may see this warning because you've called styled inside another component.\\nTo resolve this only create new StyledComponents outside of any render method and function component.\",i=console.error;try{var a=!0;console.error=function(t){for(var n=[],o=1;o?@[\\\\\\]^`{|}~-]+/g,D=/(^-|-$)/g;function R(e){return e.replace(O,\"-\").replace(D,\"\")}var T=/(a)(d)/gi,k=52,j=function(e){return String.fromCharCode(e+(e>25?39:97))};function x(e){var t,n=\"\";for(t=Math.abs(e);t>k;t=t/k|0)n=j(t%k)+n;return(j(t%k)+n).replace(T,\"$1-$2\")}var V,F=5381,M=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},z=function(e){return M(F,e)};function $(e){return x(z(e)>>>0)}function B(e){return\"production\"!==process.env.NODE_ENV&&\"string\"==typeof e&&e||e.displayName||e.name||\"Component\"}function L(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var G=\"function\"==typeof Symbol&&Symbol.for,Y=G?Symbol.for(\"react.memo\"):60115,W=G?Symbol.for(\"react.forward_ref\"):60112,q={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},H={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},U={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},J=((V={})[W]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},V[Y]=U,V);function X(e){return(\"type\"in(t=e)&&t.type.$$typeof)===Y?U:\"$$typeof\"in e?J[e.$$typeof]:q;var t}var Z=Object.defineProperty,K=Object.getOwnPropertyNames,Q=Object.getOwnPropertySymbols,ee=Object.getOwnPropertyDescriptor,te=Object.getPrototypeOf,ne=Object.prototype;function oe(e,t,n){if(\"string\"!=typeof t){if(ne){var o=te(t);o&&o!==ne&&oe(e,o,n)}var r=K(t);Q&&(r=r.concat(Q(t)));for(var s=X(e),i=X(t),a=0;a ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document ``\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\",18:\"ThemeProvider: Please make sure your useTheme hook is within a ``\"}:{};function de(){for(var e=[],t=0;t0?\" Args: \".concat(n.join(\", \")):\"\")):new Error(de.apply(void 0,e([pe[t]],n,!1)).trim())}var fe=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}return e.prototype.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,o=n.length,r=o;e>=r;)if((r<<=1)<0)throw he(16,\"\".concat(e));this.groupSizes=new Uint32Array(r),this.groupSizes.set(n),this.length=r;for(var s=o;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],o=this.indexOfGroup(e),r=o+n,s=o;sme))throw he(16,\"\".concat(t));return ye.set(e,t),ve.set(t,e),t},we=function(e,t){ge=t+1,ye.set(e,t),ve.set(t,e)},be=\"style[\".concat(f,\"][\").concat(y,'=\"').concat(v,'\"]'),Ee=new RegExp(\"^\".concat(f,'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)')),Ne=function(e,t,n){for(var o,r=n.split(\",\"),s=0,i=r.length;s=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e0&&(c+=\"\".concat(e,\",\"))}),o+=\"\".concat(i).concat(a,'{content:\"').concat(c,'\"}').concat(g)},s=0;s0?\".\".concat(t):e},u=c.slice();u.push(function(e){e.type===d.RULESET&&e.value.includes(\"&\")&&(e.props[0]=e.props[0].replace(je,n).replace(o,l))}),i.prefix&&u.push(d.prefixer),u.push(d.stringify);var p=function(e,r,s,a){void 0===r&&(r=\"\"),void 0===s&&(s=\"\"),void 0===a&&(a=\"&\"),t=a,n=r,o=new RegExp(\"\\\\\".concat(n,\"\\\\b\"),\"g\");var c=e.replace(xe,\"\"),l=d.compile(s||r?\"\".concat(s,\" \").concat(r,\" { \").concat(c,\" }\"):c);i.namespace&&(l=Ve(l,i.namespace));var p=[];return d.serialize(l,d.middleware(u.concat(d.rulesheet(function(e){return p.push(e)})))),p};return p.hash=c.length?c.reduce(function(e,t){return t.name||he(15),M(e,t.name)},F).toString():\"\",p}var Me=new ke,ze=Fe(),$e=o.createContext({shouldForwardProp:void 0,styleSheet:Me,stylis:ze}),Be=$e.Consumer,Le=o.createContext(void 0);function Ge(){return c($e)}function Ye(e){var t=s(e.stylisPlugins),n=t[0],r=t[1],c=Ge().styleSheet,l=i(function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t},[e.disableCSSOMInjection,e.sheet,e.target,c]),u=i(function(){return Fe({options:{namespace:e.namespace,prefix:e.enableVendorPrefixes},plugins:n})},[e.enableVendorPrefixes,e.namespace,n]);a(function(){p(n,e.stylisPlugins)||r(e.stylisPlugins)},[e.stylisPlugins]);var d=i(function(){return{shouldForwardProp:e.shouldForwardProp,styleSheet:l,stylis:u}},[e.shouldForwardProp,l,u]);return o.createElement($e.Provider,{value:d},o.createElement(Le.Provider,{value:u},e.children))}var We=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=ze);var o=n.name+t.hash;e.hasNameForId(n.id,o)||e.insertRules(n.id,o,t(n.rules,o,\"@keyframes\"))},this.name=e,this.id=\"sc-keyframes-\".concat(e),this.rules=t,ue(this,function(){throw he(12,String(n.name))})}return e.prototype.getName=function(e){return void 0===e&&(e=ze),this.name+e.hash},e}(),qe=function(e){return e>=\"A\"&&e<=\"Z\"};function He(e){for(var t=\"\",n=0;n>>0);if(!t.hasNameForId(this.componentId,s)){var i=n(r,\".\".concat(s),void 0,this.componentId);t.insertRules(this.componentId,s,i)}o=ie(o,s),this.staticRulesId=s}else{for(var a=M(this.baseHash,n.hash),c=\"\",l=0;l>>0);t.hasNameForId(this.componentId,d)||t.insertRules(this.componentId,d,n(c,\".\".concat(d),void 0,this.componentId)),o=ie(o,d)}}return o},e}(),et=o.createContext(void 0),tt=et.Consumer;function nt(){var e=c(et);if(!e)throw he(18);return e}function ot(e){var n=o.useContext(et),r=i(function(){return function(e,n){if(!e)throw he(14);if(re(e)){var o=e(n);if(\"production\"!==process.env.NODE_ENV&&(null===o||Array.isArray(o)||\"object\"!=typeof o))throw he(7);return o}if(Array.isArray(e)||\"object\"!=typeof e)throw he(8);return n?t(t({},n),e):e}(e.theme,n)},[e.theme,n]);return e.children?o.createElement(et.Provider,{value:r},e.children):null}var rt={},st=new Set;function it(e,r,s){var i=se(e),a=e,c=!L(e),p=r.attrs,d=void 0===p?_:p,h=r.componentId,f=void 0===h?function(e,t){var n=\"string\"!=typeof e?\"sc\":R(e);rt[n]=(rt[n]||0)+1;var o=\"\".concat(n,\"-\").concat($(v+n+rt[n]));return t?\"\".concat(t,\"-\").concat(o):o}(r.displayName,r.parentComponentId):h,m=r.displayName,y=void 0===m?function(e){return L(e)?\"styled.\".concat(e):\"Styled(\".concat(B(e),\")\")}(e):m,g=r.displayName&&r.componentId?\"\".concat(R(r.displayName),\"-\").concat(r.componentId):r.componentId||f,S=i&&a.attrs?a.attrs.concat(d).filter(Boolean):d,w=r.shouldForwardProp;if(i&&a.shouldForwardProp){var b=a.shouldForwardProp;if(r.shouldForwardProp){var E=r.shouldForwardProp;w=function(e,t){return b(e,t)&&E(e,t)}}else w=b}var N=new Qe(s,g,i?a.componentStyle:void 0);function O(e,r){return function(e,r,s){var i=e.attrs,a=e.componentStyle,c=e.defaultProps,p=e.foldedComponentIds,d=e.styledComponentId,h=e.target,f=o.useContext(et),m=Ge(),y=e.shouldForwardProp||m.shouldForwardProp;\"production\"!==process.env.NODE_ENV&&l(d);var v=I(r,f,c)||C,g=function(e,n,o){for(var r,s=t(t({},n),{className:void 0,theme:o}),i=0;i` (connect an API like `@emotion/is-prop-valid`) or consider using transient props (`$` prefix for automatic filtering.)')))));var E=function(e,t){var n=Ge(),o=e.generateAndInjectStyles(t,n.styleSheet,n.stylis);return\"production\"!==process.env.NODE_ENV&&l(o),o}(a,g);\"production\"!==process.env.NODE_ENV&&e.warnTooManyClasses&&e.warnTooManyClasses(E);var N=ie(p,d);return E&&(N+=\" \"+E),g.className&&(N+=\" \"+g.className),w[L(S)&&!A.has(S)?\"class\":\"className\"]=N,w.ref=s,u(S,w)}(D,e,r)}O.displayName=y;var D=o.forwardRef(O);return D.attrs=S,D.componentStyle=N,D.displayName=y,D.shouldForwardProp=w,D.foldedComponentIds=i?ie(a.foldedComponentIds,a.styledComponentId):\"\",D.styledComponentId=g,D.target=i?a.target:e,Object.defineProperty(D,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(e){this._foldedDefaultProps=i?function(e){for(var t=[],n=1;n=200)){var s=t?' with the id of \"'.concat(t,'\"'):\"\";console.warn(\"Over \".concat(200,\" classes were generated for component \").concat(e).concat(s,\".\\n\")+\"Consider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n \"),o=!0,n={}}}}(y,g)),ue(D,function(){return\".\".concat(D.styledComponentId)}),c&&oe(D,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0}),D}function at(e,t){for(var n=[e[0]],o=0,r=t.length;o2&&ke.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,o)},e}();function ft(n){for(var r=[],s=1;s meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"),t.styleSheet.server&&u(r,e,t.styleSheet,n,t.stylis),o.useLayoutEffect(function(){if(!t.styleSheet.server)return u(r,e,t.styleSheet,n,t.stylis),function(){return c.removeStyles(r,t.styleSheet)}},[r,e,t.styleSheet,n,t.stylis]),null};function u(e,n,o,r,s){if(c.isStatic)c.renderStyles(e,b,o,s);else{var i=t(t({},n),{theme:I(n,r,l.defaultProps)});c.renderStyles(e,i,o,s)}}return o.memo(l)}function mt(t){for(var n=[],o=1;o\").concat(t,\"\")},this.getStyleTags=function(){if(e.sealed)throw he(2);return e._emitSheetCSS()},this.getStyleElement=function(){var n;if(e.sealed)throw he(2);var r=e.instance.toString();if(!r)return[];var s=((n={})[f]=\"\",n[y]=v,n.dangerouslySetInnerHTML={__html:r},n),i=Ce();return i&&(s.nonce=i),[o.createElement(\"style\",t({},s,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new ke({isServer:!0}),this.sealed=!1}return e.prototype.collectStyles=function(e){if(this.sealed)throw he(2);return o.createElement(Ye,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw he(3)},e}(),gt={StyleSheet:ke,mainSheet:Me};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\");var St=\"__sc-\".concat(f,\"__\");\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[St]||(window[St]=0),1===window[St]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"),window[St]+=1);export{vt as ServerStyleSheet,Be as StyleSheetConsumer,$e as StyleSheetContext,Ye as StyleSheetManager,tt as ThemeConsumer,et as ThemeContext,ot as ThemeProvider,gt as __PRIVATE__,ft as createGlobalStyle,lt as css,dt as default,se as isStyledComponent,mt as keyframes,dt as styled,nt as useTheme,v as version,yt as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","var STACK_ORDER = [\n 'PLAYER_WRAPPER',\n 'START_PLAY_OVERLAY',\n 'LOADING_SPINNER',\n 'SCENE_SEARCH_MOBILE',\n 'POSTPLAY',\n 'CONTROL_UI',\n 'PSEUD_PROGRESS_BAR',\n 'SHORTCUT_TABLE',\n 'CONTROL_HINT',\n 'DIALOG',\n 'MOVIE_PART',\n];\nvar getZIndex = function (name) {\n var arrayIndex = STACK_ORDER.findIndex(function (value) { return value === name; });\n return arrayIndex + 1;\n};\n\nexport { getZIndex };\n//# sourceMappingURL=stackOrder.es.js.map\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n}\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nexport { __assign as _, __makeTemplateObject as a, __rest as b, __awaiter as c, __generator as d };\n//# sourceMappingURL=tslib.es6-3868aa2e.js.map\n","import { a as __makeTemplateObject } from '../tslib.es6-3868aa2e.js';\nimport { css } from 'styled-components';\n\nvar PLAYER_UI_TRANSITION = css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n opacity: \", \";\\n transition-duration: 0.2s;\\n transition-timing-function: ease-out;\\n transition-property: opacity;\\n \", \"\\n\"], [\"\\n opacity: \", \";\\n transition-duration: 0.2s;\\n transition-timing-function: ease-out;\\n transition-property: opacity;\\n \", \"\\n\"])), function (_a) {\n var show = _a.show;\n return (show ? 1 : 0);\n}, function (_a) {\n var show = _a.show;\n return !show && 'pointer-events: none;';\n});\nvar FONT_FAMILY = {\n GLOBAL: \"\\\"Hiragino Sans\\\", \\\"Hiragino Kaku Gothic ProN\\\", \\\"Noto Sans JP\\\", \\\"Noto Sans CJK JP\\\", \\\"BIZ UDPGothic\\\", Meiryo, -apple-system, BlinkMacSystemFont, sans-serif\",\n MONOSPACE: \"\\\"SF Pro Text\\\", \\\"Helvetica Neue\\\", \\\"Robot\\\", \\u201CSegoe UI\\u201D, \\\"Arial\\\", sans-serif\",\n};\nvar templateObject_1;\n\nexport { FONT_FAMILY, PLAYER_UI_TRANSITION };\n//# sourceMappingURL=index.es.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\n\nvar DEFAULT_DURATION_MS = 3000;\nvar useUIDisplayTimer = function (duration) {\n if (duration === void 0) { duration = DEFAULT_DURATION_MS; }\n var timerRef = useRef();\n var forceHiding = useRef(false);\n var forceHidingTimer = useRef();\n var _a = useState(false), showUI = _a[0], setShowUI = _a[1];\n var isTimerDisabledRef = useRef(false);\n var startUITimer = useCallback(function () {\n if (forceHiding.current)\n return;\n setShowUI(true);\n if (!isTimerDisabledRef.current) {\n if (timerRef.current) {\n window.clearTimeout(timerRef.current);\n }\n timerRef.current = window.setTimeout(function () {\n setShowUI(false);\n }, duration);\n }\n }, [duration]);\n var forceHideUI = useCallback(function (forceHideDuration) {\n window.clearTimeout(timerRef.current);\n timerRef.current = undefined;\n setShowUI(false);\n if (forceHideDuration) {\n if (forceHidingTimer.current)\n window.clearTimeout(forceHidingTimer.current);\n forceHiding.current = true;\n forceHidingTimer.current = window.setTimeout(function () {\n forceHiding.current = false;\n }, forceHideDuration);\n }\n }, []);\n var setIsUITimerDisabled = useCallback(function (disable) {\n isTimerDisabledRef.current = disable;\n startUITimer();\n if (disable) {\n window.clearTimeout(timerRef.current);\n timerRef.current = undefined;\n }\n }, [startUITimer]);\n useEffect(function () {\n return function () {\n window.clearTimeout(timerRef.current);\n timerRef.current = undefined;\n };\n }, []);\n return { showUI: showUI, startUITimer: startUITimer, forceHideUI: forceHideUI, setIsUITimerDisabled: setIsUITimerDisabled };\n};\n\nexport { useUIDisplayTimer as default };\n//# sourceMappingURL=useUIDisplayTimer.es.js.map\n","import { useState, useEffect } from 'react';\nimport Bowser from 'bowser';\n\n/**\n * A hook to check if user agent is an iOS device\n *\n **/\nvar useDeviceInfo = function () {\n var _a = useState(null), deviceInfo = _a[0], setDeviceInfo = _a[1];\n var deviceFromUA = function (userAgent) {\n var parser = Bowser.getParser(userAgent);\n if (parser.getOSName().match(/(iOS|iPad)/)) {\n return {\n os: 'ios',\n browser: 'safari',\n };\n }\n var browser;\n switch (parser.getBrowserName(true)) {\n case 'safari':\n browser = 'safari';\n break;\n case 'firefox':\n browser = 'firefox';\n break;\n case 'chrome':\n case 'edge':\n default:\n browser = 'chrome';\n }\n if (parser.getOSName().match(/Android/)) {\n return {\n os: 'android',\n browser: browser,\n };\n }\n if (parser.getOSName().match(/macOS/)) {\n return {\n os: 'macOS',\n browser: browser,\n };\n }\n if (parser.getOSName().match(/Windows/)) {\n return {\n os: 'windows',\n browser: browser,\n };\n }\n return null;\n };\n useEffect(function () {\n setDeviceInfo(deviceFromUA(navigator.userAgent));\n }, []);\n return deviceInfo;\n};\n\nexport { useDeviceInfo as default };\n//# sourceMappingURL=useDeviceInfo.es.js.map\n","import { useCallback, useEffect } from 'react';\nimport useDeviceInfo from './useDeviceInfo.es.js';\nimport 'bowser';\n\nvar usePageVisibilityChange = function (_a) {\n var onPageVisibilityChange = _a.onPageVisibilityChange, onPageUnload = _a.onPageUnload;\n var deviceInfo = useDeviceInfo();\n var onVisibilityChange = useCallback(function () {\n if (document.visibilityState === 'hidden') {\n onPageVisibilityChange(false);\n }\n else if (document.visibilityState === 'visible') {\n onPageVisibilityChange(true);\n }\n }, [onPageVisibilityChange]);\n var onBeforeUnload = useCallback(function () {\n onPageUnload();\n }, [onPageUnload]);\n useEffect(function () {\n if (deviceInfo) {\n var savedOnVisibilityChangeListener_1 = onVisibilityChange;\n var savedOnPageHideListener_1 = onPageUnload;\n var savedOnBeforeUnload_1 = onBeforeUnload;\n document.addEventListener('visibilitychange', savedOnVisibilityChangeListener_1);\n window.addEventListener('pagehide', savedOnPageHideListener_1);\n if (deviceInfo.browser === 'safari') {\n window.addEventListener('beforeunload', savedOnBeforeUnload_1);\n }\n return function () {\n if (deviceInfo.browser === 'safari') {\n window.removeEventListener('beforeunload', savedOnBeforeUnload_1);\n }\n window.removeEventListener('pagehide', savedOnPageHideListener_1);\n document.removeEventListener('visibilitychange', savedOnVisibilityChangeListener_1);\n };\n }\n }, [deviceInfo, onBeforeUnload, onPageUnload, onVisibilityChange]);\n};\n\nexport { usePageVisibilityChange as default };\n//# sourceMappingURL=usePageVisibilityChange.es.js.map\n","import { createContext } from 'react';\n\nvar ContainerSizeContext = createContext({\n width: 0,\n height: 0,\n});\n\nexport { ContainerSizeContext as default };\n//# sourceMappingURL=index.es.js.map\n","import { useContext } from 'react';\nimport useDeviceInfo from './useDeviceInfo.es.js';\nimport ContainerSizeContext from '../contexts/ContainerSizeContext/index.es.js';\nimport 'bowser';\n\nvar STYLE_BREAKPOINTS = {\n MOBILE: 640,\n};\n/**\n * @description If container size is smaller than the specified break point, returns true\n * @param mediaType To specify a break point\n * @param defaultValue Default value if container doesn't exist. Useful for SSR\n * @param widthOverride Override the width value (for some cases that can't get the width from the context)\n */\nvar useContainerSize = function (mediaType, defaultValue, widthOverride) {\n if (defaultValue === void 0) { defaultValue = true; }\n if (widthOverride === void 0) { widthOverride = 0; }\n var width = useContext(ContainerSizeContext).width;\n width = widthOverride || width;\n var deviceInfo = useDeviceInfo();\n if (width === 0)\n return defaultValue;\n if (mediaType === 'MOBILE' && deviceInfo) {\n return (width <= STYLE_BREAKPOINTS.MOBILE ||\n deviceInfo.os === 'ios' ||\n deviceInfo.os === 'android');\n }\n return width <= STYLE_BREAKPOINTS[mediaType];\n};\n\nexport { useContainerSize as default };\n//# sourceMappingURL=useContainerSize.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { useState, useCallback, useEffect } from 'react';\nimport ContainerSizeContext from './index.es.js';\n\nvar ContainerSizeContextProvider = function (_a) {\n var containerElement = _a.containerElement, children = _a.children;\n var _b = useState({ width: 0, height: 0 }), value = _b[0], setValue = _b[1];\n var updateContainerSize = useCallback(function () {\n if (containerElement) {\n setValue({\n width: containerElement.offsetWidth,\n height: containerElement.offsetHeight,\n });\n }\n }, [containerElement]);\n useEffect(function () {\n updateContainerSize();\n }, [updateContainerSize]);\n useEffect(function () {\n window.addEventListener('resize', updateContainerSize);\n return function () { return window.removeEventListener('resize', updateContainerSize); };\n }, [updateContainerSize]);\n return (jsx(ContainerSizeContext.Provider, __assign({ value: value }, { children: children })));\n};\n\nexport { ContainerSizeContextProvider as default };\n//# sourceMappingURL=ContainerSizeContextProvider.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled, { css } from 'styled-components';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\n\nvar Indicator = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 120px;\\n height: 120px;\\n background: \", \";\\n backdrop-filter: blur(4px);\\n border-radius: 50%;\\n > svg {\\n width: 64px;\\n height: 64px;\\n }\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 120px;\\n height: 120px;\\n background: \", \";\\n backdrop-filter: blur(4px);\\n border-radius: 50%;\\n > svg {\\n width: 64px;\\n height: 64px;\\n }\\n\\n \", \"\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.indicator.background;\n}, function (_a) {\n var isMobile = _a.isMobile;\n return isMobile && css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n width: 60px;\\n height: 60px;\\n > svg {\\n width: 32px;\\n height: 32px;\\n }\\n \"], [\"\\n width: 60px;\\n height: 60px;\\n > svg {\\n width: 32px;\\n height: 32px;\\n }\\n \"])));\n});\nvar Wrapper = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: \", \";\\n cursor: pointer;\\n z-index: \", \";\\n\\n &:hover > \", \" {\\n background: \", \";\\n }\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: \", \";\\n cursor: pointer;\\n z-index: \", \";\\n\\n &:hover > \", \" {\\n background: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n}, getZIndex('START_PLAY_OVERLAY'), Indicator, function (_a) {\n var theme = _a.theme;\n return theme.indicator.backgroundHover;\n});\nvar templateObject_1, templateObject_2, templateObject_3;\n\nexport { Indicator, Wrapper };\n//# sourceMappingURL=styles.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgPlay(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.905 32L19.5 51.919V12.08L52.905 32z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgPlay as default };\n//# sourceMappingURL=play.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { Wrapper, Indicator } from './styles.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport SvgPlay from '../../assets/icons/play.es.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport 'react';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar StartPlayOverlay = function (_a) {\n var player = _a.player;\n var isMobile = useContainerSize('MOBILE');\n return (jsx(Wrapper, __assign({ onClick: function () {\n player.getVideoElement().play();\n } }, { children: jsx(Indicator, __assign({ isMobile: isMobile }, { children: jsx(SvgPlay, {}) })) })));\n};\n\nexport { StartPlayOverlay as default };\n//# sourceMappingURL=index.es.js.map\n","var functionThrottle = throttle;\n\nfunction throttle(fn, interval, options) {\n var timeoutId = null;\n var throttledFn = null;\n var leading = (options && options.leading);\n var trailing = (options && options.trailing);\n\n if (leading == null) {\n leading = true; // default\n }\n\n if (trailing == null) {\n trailing = !leading; //default\n }\n\n if (leading == true) {\n trailing = false; // forced because there should be invocation per call\n }\n\n var cancel = function() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n var flush = function() {\n var call = throttledFn;\n cancel();\n\n if (call) {\n call();\n }\n };\n\n var throttleWrapper = function() {\n var callNow = leading && !timeoutId;\n var context = this;\n var args = arguments;\n\n throttledFn = function() {\n return fn.apply(context, args);\n };\n\n if (!timeoutId) {\n timeoutId = setTimeout(function() {\n timeoutId = null;\n\n if (trailing) {\n return throttledFn();\n }\n }, interval);\n }\n\n if (callNow) {\n callNow = false;\n return throttledFn();\n }\n };\n\n throttleWrapper.cancel = cancel;\n throttleWrapper.flush = flush;\n\n return throttleWrapper;\n}\n\nexport {functionThrottle as default};\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled from 'styled-components';\n\nvar POINTER_EVENT_AREA_WRAPPER_Z_INDEX = 2;\nvar Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n cursor: \", \";\\n z-index: \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n cursor: \", \";\\n z-index: \", \";\\n\"])), function (_a) {\n var showCursor = _a.showCursor;\n return (showCursor ? 'unset' : 'none');\n}, POINTER_EVENT_AREA_WRAPPER_Z_INDEX);\nvar templateObject_1;\n\nexport { POINTER_EVENT_AREA_WRAPPER_Z_INDEX, Wrapper };\n//# sourceMappingURL=styles.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { useRef, useMemo } from 'react';\nimport throttle from 'just-throttle';\nimport { Wrapper } from './styles.es.js';\nimport 'styled-components';\n\nvar PointerEventArea = function (_a) {\n var startDisplayOverlay = _a.startDisplayOverlay, showCursor = _a.showCursor, children = _a.children;\n var wrapperRef = useRef(null);\n var onPointerMoveThrottled = useMemo(function () {\n var throttled = throttle(startDisplayOverlay, 500, {\n leading: true,\n trailing: false,\n });\n return function (e) {\n e.persist();\n throttled(e);\n };\n }, [startDisplayOverlay]);\n return (jsx(Wrapper, __assign({ ref: wrapperRef, onClick: startDisplayOverlay, onPointerMove: onPointerMoveThrottled, showCursor: showCursor }, { children: children })));\n};\n\nexport { PointerEventArea as default };\n//# sourceMappingURL=index.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled from 'styled-components';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport { PLAYER_UI_TRANSITION } from '../../styles/index.es.js';\n\nvar LoadingContainer = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n z-index: \", \";\\n background-color: \", \";\\n\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n \", \";\\n\\n > svg {\\n opacity: 0.5;\\n width: \", \";\\n }\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n z-index: \", \";\\n background-color: \", \";\\n\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n \", \";\\n\\n > svg {\\n opacity: 0.5;\\n width: \", \";\\n }\\n\"])), getZIndex('LOADING_SPINNER'), function (_a) {\n var theme = _a.theme;\n return theme.loader.background;\n}, PLAYER_UI_TRANSITION, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '48px' : '96px');\n});\nvar templateObject_1;\n\nexport { LoadingContainer };\n//# sourceMappingURL=styles.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgLoadingAnimation(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 120 120\",\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h32v32H0z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"0s\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillOpacity: 0.5,\n d: \"M0 44h32v32H0z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"100ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44 0h32v32H44z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"300ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44 44h32v32H44z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"600ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88 0h32v32H88z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"800ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88 44h32v32H88z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"400ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 88h32v32H0z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"700ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44 88h32v32H44z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"500ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88 88h32v32H88z\"\n }, /*#__PURE__*/React.createElement(\"animate\", {\n attributeName: \"fill-opacity\",\n begin: \"200ms\",\n dur: \"1s\",\n values: \"1;.2;1\",\n calcMode: \"linear\",\n repeatCount: \"indefinite\"\n }))));\n}\n\nexport { SvgLoadingAnimation as default };\n//# sourceMappingURL=loading_animation.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { LoadingContainer } from './styles.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport SvgLoadingAnimation from '../../assets/loading_animation.es.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport '../../styles/index.es.js';\nimport 'react';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar LoadingIndicator = function (_a) {\n var show = _a.show;\n var isMobile = useContainerSize('MOBILE');\n return (jsx(LoadingContainer, __assign({ show: show, isMobile: isMobile }, { children: jsx(SvgLoadingAnimation, {}) })));\n};\n\nexport { LoadingIndicator as default };\n//# sourceMappingURL=index.es.js.map\n","import { useRef, useEffect, useCallback } from 'react';\n\n/**\n * A hook for creating a memoized event callback.\n */\nfunction useEventCallback(fn) {\n var ref = useRef(function () {\n throw new Error('Cannot call an event handler while rendering.');\n });\n useEffect(function () {\n ref.current = fn;\n }, [fn]);\n return useCallback(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return ref.current.apply(ref, args);\n }, [ref]);\n}\n\nexport { useEventCallback };\n//# sourceMappingURL=useEventCallback.es.js.map\n","import { _ as __assign } from '../tslib.es6-3868aa2e.js';\nimport { useState } from 'react';\nimport { useEventCallback } from './useEventCallback.es.js';\n\nfunction useLocalStorage(key, initialValue) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n var _a = useState(function () {\n if (typeof window === 'undefined') {\n return initialValue;\n }\n try {\n // Get from local storage by key\n var item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? __assign(__assign({}, initialValue), JSON.parse(item)) : initialValue;\n }\n catch (error) {\n console.log(error);\n return initialValue;\n }\n }), storedValue = _a[0], setStoredValue = _a[1];\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n var setValue = useEventCallback(function (value, ignoreStateUpdate) {\n try {\n // Allow value to be a function so we have same API as useState\n var valueToStore = value instanceof Function ? value(storedValue) : value;\n if (!ignoreStateUpdate) {\n // Save state\n setStoredValue(valueToStore);\n }\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n });\n return [storedValue, setValue];\n}\n\nexport { useLocalStorage as default };\n//# sourceMappingURL=useLocalStorage.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { createContext, useCallback } from 'react';\nimport useLocalStorage from '../../hooks/useLocalStorage.es.js';\nimport '../../hooks/useEventCallback.es.js';\n\nvar Bitrate;\n(function (Bitrate) {\n Bitrate[\"AUTO\"] = \"bitrateAuto\";\n Bitrate[\"LOW\"] = \"bitrateLow\";\n Bitrate[\"HIGH\"] = \"bitrateHigh\";\n})(Bitrate || (Bitrate = {}));\nvar defaultUserPlayerSetting = {\n autoplay: true,\n bitrate: Bitrate.AUTO,\n playMode: 'caption',\n volume: 1,\n prevVolume: 0,\n playbackRate: 1,\n openingSkip: 'MANUAL',\n endingSkip: 'AUTO',\n};\nvar UserPlayerSettingContext = createContext({\n userPlayerSetting: defaultUserPlayerSetting,\n updateUserPlayerSetting: function (playerSetting) { return playerSetting; },\n});\nvar UserPlayerSettingProvider = function (_a) {\n var children = _a.children;\n var _b = useLocalStorage('userPlayerSetting', defaultUserPlayerSetting), userPlayerSetting = _b[0], setUserPlayerSetting = _b[1];\n var updateUserPlayerSetting = useCallback(function (val) {\n setUserPlayerSetting(function (prevSetting) { return (__assign(__assign({}, prevSetting), val)); });\n }, [setUserPlayerSetting]);\n return (jsx(UserPlayerSettingContext.Provider, __assign({ value: { userPlayerSetting: userPlayerSetting, updateUserPlayerSetting: updateUserPlayerSetting } }, { children: children })));\n};\n\nexport { UserPlayerSettingProvider, UserPlayerSettingContext as default };\n//# sourceMappingURL=UserPlayerSettingContext.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgPlaybackRate(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53 34c0 5.744-2.306 10.95-6.044 14.741l3.536 3.536A25.917 25.917 0 0058 34C58 19.64 46.36 8 32 8S6 19.64 6 34c0 7.125 2.866 13.58 7.508 18.277l3.536-3.536A20.932 20.932 0 0111 34c0-11.598 9.402-21 21-21s21 9.402 21 21z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.064 36.7a5 5 0 11-4.556-7.892l12.616-2.023-8.06 9.914zM33 35.516a2 2 0 11-2-3.464 2 2 0 012 3.464z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgPlaybackRate as default };\n//# sourceMappingURL=playback_rate.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled, { css } from 'styled-components';\nimport { FONT_FAMILY } from '../../styles/index.es.js';\n\nvar Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar Title = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n height: 48px;\\n padding: 0 8px 0 12px;\\n font-size: 16px;\\n font-weight: 600;\\n border-bottom: 1px solid \", \";\\n\\n svg {\\n color: \", \";\\n }\\n\\n \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n height: 48px;\\n padding: 0 8px 0 12px;\\n font-size: 16px;\\n font-weight: 600;\\n border-bottom: 1px solid \", \";\\n\\n svg {\\n color: \", \";\\n }\\n\\n \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.border;\n}, function (_a) {\n var theme = _a.theme;\n return theme.text.faded;\n}, function (_a) {\n var isMobile = _a.isMobile;\n return isMobile && css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n padding: 0 8px;\\n \"], [\"\\n padding: 0 8px;\\n \"])));\n});\nvar PlayableThumbnailOverlay = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: \", \";\\n opacity: 0;\\n font-size: 16px;\\n font-weight: 600;\\n color: \", \";\\n\\n > svg {\\n height: 48px;\\n }\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: \", \";\\n opacity: 0;\\n font-size: 16px;\\n font-weight: 600;\\n color: \", \";\\n\\n > svg {\\n height: 48px;\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.item.overlay;\n}, function (_a) {\n var theme = _a.theme;\n return theme.text.standard;\n});\nvar PlayableThumbnail = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n flex-shrink: 0;\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 144px;\\n height: 81px;\\n overflow: hidden;\\n border-radius: 4px;\\n background-color: \", \";\\n\\n > img {\\n width: 100%;\\n }\\n\"], [\"\\n flex-shrink: 0;\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 144px;\\n height: 81px;\\n overflow: hidden;\\n border-radius: 4px;\\n background-color: \", \";\\n\\n > img {\\n width: 100%;\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.item.placeholder;\n});\nvar PlayableItem = styled.button(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n display: flex;\\n gap: 12px;\\n align-items: center;\\n width: 100%;\\n padding: 12px 16px 12px 12px;\\n margin: 0;\\n border: 0;\\n border-style: none;\\n background-color: transparent;\\n color: \", \";\\n font-size: \", \";\\n transition:\\n color 0.15s ease-in,\\n background-color 0.15s ease-in;\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid \", \";\\n }\\n\\n \", \";\\n\\n \", \";\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n \", \" {\\n opacity: 1;\\n }\\n }\\n\"], [\"\\n display: flex;\\n gap: 12px;\\n align-items: center;\\n width: 100%;\\n padding: 12px 16px 12px 12px;\\n margin: 0;\\n border: 0;\\n border-style: none;\\n background-color: transparent;\\n color: \", \";\\n font-size: \", \";\\n transition:\\n color 0.15s ease-in,\\n background-color 0.15s ease-in;\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid \", \";\\n }\\n\\n \", \";\\n\\n \", \";\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n \", \" {\\n opacity: 1;\\n }\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.light;\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '11px' : '12px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.borderFaded;\n}, function (_a) {\n var isPlaying = _a.isPlaying;\n return isPlaying && css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n \", \" {\\n opacity: 1;\\n }\\n \"], [\"\\n \", \" {\\n opacity: 1;\\n }\\n \"])), PlayableThumbnailOverlay);\n}, function (_a) {\n var disabled = _a.disabled;\n return !disabled && css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n cursor: pointer;\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n \", \" {\\n opacity: 1;\\n }\\n }\\n }\\n \"], [\"\\n cursor: pointer;\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n \", \" {\\n opacity: 1;\\n }\\n }\\n }\\n \"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.item.backgroundHover;\n }, PlayableThumbnailOverlay);\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.border;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.item.backgroundHover;\n}, PlayableThumbnailOverlay);\nvar Meta = styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n gap: 4px;\\n align-items: flex-start;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n gap: 4px;\\n align-items: flex-start;\\n\"])));\nvar SubText = styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n font-family: \", \";\\n letter-spacing: 0.02em;\\n color: \", \";\\n font-weight: 600;\\n\"], [\"\\n font-family: \", \";\\n letter-spacing: 0.02em;\\n color: \", \";\\n font-weight: 600;\\n\"])), FONT_FAMILY.MONOSPACE, function (_a) {\n var theme = _a.theme;\n return theme.text.faded;\n});\nvar PlayableItemsContainer = styled.div(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n width: 320px;\\n // for mobile, the max-height is 95vh (dialog max-height) - 50px (header height + border)\\n \", \"\\n overflow-y: auto;\\n\"], [\"\\n width: 320px;\\n // for mobile, the max-height is 95vh (dialog max-height) - 50px (header height + border)\\n \", \"\\n overflow-y: auto;\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return isMobile\n ? css(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n max-height: calc(95vh - 50px);\\n max-height: calc(95svh - 50px);\\n \"], [\"\\n max-height: calc(95vh - 50px);\\n max-height: calc(95svh - 50px);\\n \"]))) : 'max-height: 400px;';\n});\nvar Playable = {\n Container: PlayableItemsContainer,\n Item: PlayableItem,\n Thumbnail: PlayableThumbnail,\n ThumbnailOverlay: PlayableThumbnailOverlay,\n Meta: Meta,\n SubText: SubText,\n};\nvar OptionButton = styled.button(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n border-style: none;\\n width: \", \";\\n height: \", \";\\n line-height: \", \";\\n padding: \", \";\\n margin: 0;\\n border: 0;\\n font-size: \", \";\\n color: \", \";\\n background-color: transparent;\\n transition:\\n color 0.15s ease-in,\\n background-color 0.15s ease-in;\\n opacity: \", \";\\n \", \";\\n\\n &:first-child {\\n margin-top: \", \";\\n }\\n\\n &:last-child {\\n margin-bottom: \", \";\\n }\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n > svg {\\n width: \", \";\\n display: none;\\n }\\n\\n \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n border-style: none;\\n width: \", \";\\n height: \", \";\\n line-height: \", \";\\n padding: \", \";\\n margin: 0;\\n border: 0;\\n font-size: \", \";\\n color: \", \";\\n background-color: transparent;\\n transition:\\n color 0.15s ease-in,\\n background-color 0.15s ease-in;\\n opacity: \", \";\\n \", \";\\n\\n &:first-child {\\n margin-top: \", \";\\n }\\n\\n &:last-child {\\n margin-bottom: \", \";\\n }\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n > svg {\\n width: \", \";\\n display: none;\\n }\\n\\n \", \";\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '160px' : '200px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '32px' : '40px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '32px' : '40px');\n}, function (_a) {\n var isMobile = _a.isMobile, hasIcon = _a.hasIcon;\n return hasIcon\n ? isMobile\n ? '0 10px 0 8px'\n : '0 16px'\n : isMobile\n ? '0 10px 0 12px'\n : '0 16px 0 24px';\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '13px' : '16px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.option.text.standard;\n}, function (_a) {\n var isLocked = _a.isLocked;\n return (isLocked ? 0.2 : 1);\n}, function (_a) {\n var isLocked = _a.isLocked;\n return isLocked && 'pointer-events: none;';\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '4px' : '8px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '4px' : '8px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.option.backgroundHover;\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '20px' : '24px');\n}, function (_a) {\n var selected = _a.selected, theme = _a.theme;\n return selected && css(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n color: \", \";\\n font-weight: 600;\\n\\n > svg {\\n color: \", \";\\n display: block;\\n }\\n \"], [\"\\n color: \", \";\\n font-weight: 600;\\n\\n > svg {\\n color: \", \";\\n display: block;\\n }\\n \"])), theme.dialog.option.text.selected, theme.dialog.option.text.check);\n});\nvar OptionWithIcon = styled.div(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n display: flex;\\n gap: 8px;\\n > svg {\\n width: \", \";\\n display: block;\\n }\\n\"], [\"\\n display: flex;\\n gap: 8px;\\n > svg {\\n width: \", \";\\n display: block;\\n }\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '20px' : '24px');\n});\nvar SettingsListContainer = styled.div(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n position: relative;\\n\\n &:not(:first-child)::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n width: 1px;\\n background-color: \", \";\\n margin: 8px 0;\\n }\\n\"], [\"\\n position: relative;\\n\\n &:not(:first-child)::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n width: 1px;\\n background-color: \", \";\\n margin: 8px 0;\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.borderFaded;\n});\nvar SettingContainer = styled.div(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar SubHeading = styled.div(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\\n margin: 0 8px;\\n padding-top: 8px;\\n text-align: center;\\n font-size: \", \"px;\\n line-height: 1.5;\\n color: \", \";\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"], [\"\\n margin: 0 8px;\\n padding-top: 8px;\\n text-align: center;\\n font-size: \", \"px;\\n line-height: 1.5;\\n color: \", \";\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? 11 : 12);\n}, function (_a) {\n var theme = _a.theme, isLocked = _a.isLocked;\n return isLocked\n ? theme.dialog.option.text.locked\n : theme.dialog.option.text.header;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.borderFaded;\n});\nvar NoticeText = styled.div(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\\n text-align: center;\\n font-size: 10px;\\n line-height: 1.4;\\n color: \", \";\\n opacity: \", \";\\n\"], [\"\\n text-align: center;\\n font-size: 10px;\\n line-height: 1.4;\\n color: \", \";\\n opacity: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.option.text.notice;\n}, function (_a) {\n var isLocked = _a.isLocked;\n return (isLocked ? 0.2 : 1);\n});\nvar SettingsSection = styled.div(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar PlayableListSelectInput = styled.select(templateObject_21 || (templateObject_21 = __makeTemplateObject([\"\\n appearance: none;\\n outline: none;\\n margin: 0;\\n padding: 0 24px 0 8px;\\n height: 32px;\\n\\n font-size: 14px;\\n font-family: \", \";\\n font-weight: 600;\\n color: \", \";\\n cursor: pointer;\\n\\n border: 1px solid \", \";\\n border-radius: 4px;\\n background-color: \", \";\\n\\n &:hover {\\n border: 1px solid \", \";\\n background-color: \", \";\\n }\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"], [\"\\n appearance: none;\\n outline: none;\\n margin: 0;\\n padding: 0 24px 0 8px;\\n height: 32px;\\n\\n font-size: 14px;\\n font-family: \", \";\\n font-weight: 600;\\n color: \", \";\\n cursor: pointer;\\n\\n border: 1px solid \", \";\\n border-radius: 4px;\\n background-color: \", \";\\n\\n &:hover {\\n border: 1px solid \", \";\\n background-color: \", \";\\n }\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"])), FONT_FAMILY.MONOSPACE, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.text.standard;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.border;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.borderHovered;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.backgroundHovered;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.borderHovered;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.backgroundHovered;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.backgroundHovered;\n});\nvar Select = styled.div(templateObject_22 || (templateObject_22 = __makeTemplateObject([\"\\n position: relative;\\n margin-left: auto;\\n\\n > svg {\\n position: absolute;\\n right: 8px;\\n top: 50%;\\n transform: translateY(-50%);\\n height: 16px;\\n color: \", \";\\n pointer-events: none;\\n }\\n\"], [\"\\n position: relative;\\n margin-left: auto;\\n\\n > svg {\\n position: absolute;\\n right: 8px;\\n top: 50%;\\n transform: translateY(-50%);\\n height: 16px;\\n color: \", \";\\n pointer-events: none;\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.select.text.faded;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22;\n\nexport { NoticeText, OptionButton, OptionWithIcon, Playable, PlayableItem, PlayableItemsContainer, PlayableListSelectInput, Select, SettingContainer, SettingsListContainer, SettingsSection, SubHeading, Title, Wrapper };\n//# sourceMappingURL=styles.es.js.map\n","// src/index.ts\nvar updateQueue = makeQueue();\nvar raf = (fn) => schedule(fn, updateQueue);\nvar writeQueue = makeQueue();\nraf.write = (fn) => schedule(fn, writeQueue);\nvar onStartQueue = makeQueue();\nraf.onStart = (fn) => schedule(fn, onStartQueue);\nvar onFrameQueue = makeQueue();\nraf.onFrame = (fn) => schedule(fn, onFrameQueue);\nvar onFinishQueue = makeQueue();\nraf.onFinish = (fn) => schedule(fn, onFinishQueue);\nvar timeouts = [];\nraf.setTimeout = (handler, ms) => {\n const time = raf.now() + ms;\n const cancel = () => {\n const i = timeouts.findIndex((t) => t.cancel == cancel);\n if (~i)\n timeouts.splice(i, 1);\n pendingCount -= ~i ? 1 : 0;\n };\n const timeout = { time, handler, cancel };\n timeouts.splice(findTimeout(time), 0, timeout);\n pendingCount += 1;\n start();\n return timeout;\n};\nvar findTimeout = (time) => ~(~timeouts.findIndex((t) => t.time > time) || ~timeouts.length);\nraf.cancel = (fn) => {\n onStartQueue.delete(fn);\n onFrameQueue.delete(fn);\n onFinishQueue.delete(fn);\n updateQueue.delete(fn);\n writeQueue.delete(fn);\n};\nraf.sync = (fn) => {\n sync = true;\n raf.batchedUpdates(fn);\n sync = false;\n};\nraf.throttle = (fn) => {\n let lastArgs;\n function queuedFn() {\n try {\n fn(...lastArgs);\n } finally {\n lastArgs = null;\n }\n }\n function throttled(...args) {\n lastArgs = args;\n raf.onStart(queuedFn);\n }\n throttled.handler = fn;\n throttled.cancel = () => {\n onStartQueue.delete(queuedFn);\n lastArgs = null;\n };\n return throttled;\n};\nvar nativeRaf = typeof window != \"undefined\" ? window.requestAnimationFrame : (\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {\n }\n);\nraf.use = (impl) => nativeRaf = impl;\nraf.now = typeof performance != \"undefined\" ? () => performance.now() : Date.now;\nraf.batchedUpdates = (fn) => fn();\nraf.catch = console.error;\nraf.frameLoop = \"always\";\nraf.advance = () => {\n if (raf.frameLoop !== \"demand\") {\n console.warn(\n \"Cannot call the manual advancement of rafz whilst frameLoop is not set as demand\"\n );\n } else {\n update();\n }\n};\nvar ts = -1;\nvar pendingCount = 0;\nvar sync = false;\nfunction schedule(fn, queue) {\n if (sync) {\n queue.delete(fn);\n fn(0);\n } else {\n queue.add(fn);\n start();\n }\n}\nfunction start() {\n if (ts < 0) {\n ts = 0;\n if (raf.frameLoop !== \"demand\") {\n nativeRaf(loop);\n }\n }\n}\nfunction stop() {\n ts = -1;\n}\nfunction loop() {\n if (~ts) {\n nativeRaf(loop);\n raf.batchedUpdates(update);\n }\n}\nfunction update() {\n const prevTs = ts;\n ts = raf.now();\n const count = findTimeout(ts);\n if (count) {\n eachSafely(timeouts.splice(0, count), (t) => t.handler());\n pendingCount -= count;\n }\n if (!pendingCount) {\n stop();\n return;\n }\n onStartQueue.flush();\n updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n onFrameQueue.flush();\n writeQueue.flush();\n onFinishQueue.flush();\n}\nfunction makeQueue() {\n let next = /* @__PURE__ */ new Set();\n let current = next;\n return {\n add(fn) {\n pendingCount += current == next && !next.has(fn) ? 1 : 0;\n next.add(fn);\n },\n delete(fn) {\n pendingCount -= current == next && next.has(fn) ? 1 : 0;\n return next.delete(fn);\n },\n flush(arg) {\n if (current.size) {\n next = /* @__PURE__ */ new Set();\n pendingCount -= current.size;\n eachSafely(current, (fn) => fn(arg) && next.add(fn));\n pendingCount += next.size;\n current = next;\n }\n }\n };\n}\nfunction eachSafely(values, each) {\n values.forEach((value) => {\n try {\n each(value);\n } catch (e) {\n raf.catch(e);\n }\n });\n}\nvar __raf = {\n /** The number of pending tasks */\n count() {\n return pendingCount;\n },\n /** Whether there's a raf update loop running */\n isRunning() {\n return ts >= 0;\n },\n /** Clear internal state. Never call from update loop! */\n clear() {\n ts = -1;\n timeouts = [];\n onStartQueue = makeQueue();\n updateQueue = makeQueue();\n onFrameQueue = makeQueue();\n writeQueue = makeQueue();\n onFinishQueue = makeQueue();\n pendingCount = 0;\n }\n};\nexport {\n __raf,\n raf\n};\n//# sourceMappingURL=react-spring_rafz.modern.mjs.map","import { raf, Rafz } from '@react-spring/rafz'\nimport {\n OneOrMore,\n InterpolatorConfig,\n InterpolatorArgs,\n} from '@react-spring/types'\n\nimport { FluidValue } from './fluids'\nimport type { OpaqueAnimation } from './FrameLoop'\nimport { noop } from './helpers'\n\n//\n// Required\n//\n\nexport let createStringInterpolator: (\n config: InterpolatorConfig\n) => (input: number) => string\n\n//\n// Optional\n//\n\nexport let to: (\n source: OneOrMore,\n args: InterpolatorArgs\n) => FluidValue\n\nexport let colors = null as { [key: string]: number } | null\n\nexport let skipAnimation = false as boolean\n\nexport let willAdvance: (animation: OpaqueAnimation) => void = noop\n\n//\n// Configuration\n//\n\nexport interface AnimatedGlobals {\n /** Returns a new `Interpolation` object */\n to?: typeof to\n /** Used to measure frame length. Read more [here](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) */\n now?: typeof raf.now\n /** Provide custom color names for interpolation */\n colors?: typeof colors\n /** Make all animations instant and skip the frameloop entirely */\n skipAnimation?: typeof skipAnimation\n /** Provide custom logic for string interpolation */\n createStringInterpolator?: typeof createStringInterpolator\n /** Schedule a function to run on the next frame */\n requestAnimationFrame?: (cb: () => void) => void\n /** Event props are called with `batchedUpdates` to reduce extraneous renders */\n batchedUpdates?: typeof raf.batchedUpdates\n /** @internal Exposed for testing purposes */\n willAdvance?: typeof willAdvance\n /** sets the global frameLoop setting for the global raf instance */\n frameLoop?: Rafz['frameLoop']\n}\n\nexport const assign = (globals: AnimatedGlobals) => {\n if (globals.to) to = globals.to\n if (globals.now) raf.now = globals.now\n if (globals.colors !== undefined) colors = globals.colors\n if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation\n if (globals.createStringInterpolator)\n createStringInterpolator = globals.createStringInterpolator\n if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame)\n if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates\n if (globals.willAdvance) willAdvance = globals.willAdvance\n if (globals.frameLoop) raf.frameLoop = globals.frameLoop\n}\n","import { Lookup, Arrify, AnyFn, Any } from '@react-spring/types'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport const defineHidden = (obj: any, key: any, value: any) =>\n Object.defineProperty(obj, key, { value, writable: true, configurable: true })\n\ntype IsType = (arg: T & any) => arg is Narrow\ntype Narrow = [T] extends [Any] ? U : [T] extends [U] ? Extract : U\n\ntype PlainObject = Exclude\n\nexport const is = {\n arr: Array.isArray as IsType,\n obj: (a: T & any): a is PlainObject =>\n !!a && a.constructor.name === 'Object',\n fun: ((a: unknown) => typeof a === 'function') as IsType,\n str: (a: unknown): a is string => typeof a === 'string',\n num: (a: unknown): a is number => typeof a === 'number',\n und: (a: unknown): a is undefined => a === undefined,\n}\n\n/** Compare animatable values */\nexport function isEqual(a: any, b: any) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n return true\n }\n return a === b\n}\n\ntype EachFn = (this: This, value: Value, key: Key) => void\ntype Eachable = {\n forEach(cb: EachFn, ctx?: This): void\n}\n\n/** Minifiable `.forEach` call */\nexport const each = (\n obj: Eachable,\n fn: EachFn\n) => obj.forEach(fn)\n\n/** Iterate the properties of an object */\nexport function eachProp(\n obj: T,\n fn: (\n this: This,\n value: T extends any[] ? T[number] : T[keyof T],\n key: string\n ) => void,\n ctx?: This\n) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx as any, obj[i] as any, `${i}`)\n }\n return\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx as any, obj[key] as any, key)\n }\n }\n}\n\nexport const toArray = (a: T): Arrify> =>\n is.und(a) ? [] : is.arr(a) ? (a as any) : [a]\n\n/** Copy the `queue`, then iterate it after the `queue` is cleared */\nexport function flush(\n queue: Map,\n iterator: (entry: [P, T]) => void\n): void\nexport function flush(queue: Set, iterator: (value: T) => void): void\nexport function flush(queue: any, iterator: any) {\n if (queue.size) {\n const items = Array.from(queue)\n queue.clear()\n each(items, iterator)\n }\n}\n\n/** Call every function in the queue with the same arguments. */\nexport const flushCalls = (\n queue: Set,\n ...args: Parameters\n) => flush(queue, fn => fn(...args))\n\n// For server-side rendering: https://github.com/react-spring/zustand/pull/34\n// Deno support: https://github.com/pmndrs/zustand/issues/347\n\nexport const isSSR = () =>\n typeof window === 'undefined' ||\n !window.navigator ||\n /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent)\n","import { raf } from '@react-spring/rafz'\nimport * as G from './globals'\n\nexport interface OpaqueAnimation {\n idle: boolean\n priority: number\n advance(dt: number): void\n}\n\n// Animations starting on the next frame\nconst startQueue = new Set()\n\n// The animations being updated in the current frame, sorted by lowest\n// priority first. These two arrays are swapped at the end of each frame.\nlet currentFrame: OpaqueAnimation[] = []\nlet prevFrame: OpaqueAnimation[] = []\n\n// The priority of the currently advancing animation.\n// To protect against a race condition whenever a frame is being processed,\n// where the filtering of `animations` is corrupted with a shifting index,\n// causing animations to potentially advance 2x faster than intended.\nlet priority = 0\n\n/**\n * The frameloop executes its animations in order of lowest priority first.\n * Animations are retained until idle.\n */\nexport const frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length\n },\n\n /** Advance the given animation on every frame until idle. */\n start(animation: OpaqueAnimation) {\n // An animation can be added while a frame is being processed,\n // unless its priority is lower than the animation last updated.\n if (priority > animation.priority) {\n startQueue.add(animation)\n raf.onStart(flushStartQueue)\n } else {\n startSafely(animation)\n raf(advance)\n }\n },\n\n /** Advance all animations by the given time. */\n advance,\n\n /** Call this when an animation's priority changes. */\n sort(animation: OpaqueAnimation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation))\n } else {\n const prevIndex = currentFrame.indexOf(animation)\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1)\n startUnsafely(animation)\n }\n }\n },\n\n /**\n * Clear all animations. For testing purposes.\n *\n * ☠️ Never call this from within the frameloop.\n */\n clear() {\n currentFrame = []\n startQueue.clear()\n },\n}\n\nfunction flushStartQueue() {\n startQueue.forEach(startSafely)\n startQueue.clear()\n raf(advance)\n}\n\nfunction startSafely(animation: OpaqueAnimation) {\n if (!currentFrame.includes(animation)) startUnsafely(animation)\n}\n\nfunction startUnsafely(animation: OpaqueAnimation) {\n currentFrame.splice(\n findIndex(currentFrame, other => other.priority > animation.priority),\n 0,\n animation\n )\n}\n\nfunction advance(dt: number) {\n const nextFrame = prevFrame\n\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i]\n priority = animation.priority\n\n // Animations may go idle before advancing.\n if (!animation.idle) {\n G.willAdvance(animation)\n animation.advance(dt)\n if (!animation.idle) {\n nextFrame.push(animation)\n }\n }\n }\n priority = 0\n\n // Reuse the `currentFrame` array to avoid garbage collection.\n prevFrame = currentFrame\n prevFrame.length = 0\n\n // Set `currentFrame` for next frame, so the `start` function\n // adds new animations to the proper array.\n currentFrame = nextFrame\n\n return currentFrame.length > 0\n}\n\n/** Like `Array.prototype.findIndex` but returns `arr.length` instead of `-1` */\nfunction findIndex(arr: T[], test: (value: T) => boolean) {\n const index = arr.findIndex(test)\n return index < 0 ? arr.length : index\n}\n","export const clamp = (min: number, max: number, v: number) =>\n Math.min(Math.max(v, min), max)\n","export type ColorName = keyof typeof colors\n\n// http://www.w3.org/TR/css3-color/#svg-color\nexport const colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff,\n}\n","// const INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+'\nconst PERCENTAGE = NUMBER + '%'\n\nfunction call(...parts: string[]) {\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)'\n}\n\nexport const rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER))\nexport const rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER))\nexport const hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE))\nexport const hsla = new RegExp(\n 'hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)\n)\nexport const hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/\nexport const hex4 =\n /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/\nexport const hex6 = /^#([0-9a-fA-F]{6})$/\nexport const hex8 = /^#([0-9a-fA-F]{8})$/\n","/*\nhttps://github.com/react-community/normalize-css-color\n\nBSD 3-Clause License\n\nCopyright (c) 2016, React Community\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\nimport * as matchers from './colorMatchers'\nimport * as G from './globals'\n\nexport function normalizeColor(color: number | string) {\n let match\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff\n ? color\n : null\n }\n\n // Ordered based on occurrences on Facebook codebase\n if ((match = matchers.hex6.exec(color)))\n return parseInt(match[1] + 'ff', 16) >>> 0\n\n if (G.colors && G.colors[color] !== undefined) {\n return G.colors[color]\n }\n\n if ((match = matchers.rgb.exec(color))) {\n return (\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) | // b\n 0x000000ff) >>> // a\n 0\n )\n }\n\n if ((match = matchers.rgba.exec(color))) {\n return (\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) | // b\n parse1(match[4])) >>> // a\n 0\n )\n }\n\n if ((match = matchers.hex3.exec(color))) {\n return (\n parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n 'ff', // a\n 16\n ) >>> 0\n )\n }\n\n // https://drafts.csswg.org/css-color-4/#hex-notation\n if ((match = matchers.hex8.exec(color))) return parseInt(match[1], 16) >>> 0\n\n if ((match = matchers.hex4.exec(color))) {\n return (\n parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n match[4] +\n match[4], // a\n 16\n ) >>> 0\n )\n }\n\n if ((match = matchers.hsl.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n 0x000000ff) >>> // a\n 0\n )\n }\n\n if ((match = matchers.hsla.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) |\n parse1(match[4])) >>> // a\n 0\n )\n }\n return null\n}\n\nfunction hue2rgb(p: number, q: number, t: number) {\n if (t < 0) t += 1\n if (t > 1) t -= 1\n if (t < 1 / 6) return p + (q - p) * 6 * t\n if (t < 1 / 2) return q\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n return p\n}\n\nfunction hslToRgb(h: number, s: number, l: number) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n const p = 2 * l - q\n const r = hue2rgb(p, q, h + 1 / 3)\n const g = hue2rgb(p, q, h)\n const b = hue2rgb(p, q, h - 1 / 3)\n return (\n (Math.round(r * 255) << 24) |\n (Math.round(g * 255) << 16) |\n (Math.round(b * 255) << 8)\n )\n}\n\nfunction parse255(str: string) {\n const int = parseInt(str, 10)\n if (int < 0) return 0\n if (int > 255) return 255\n return int\n}\n\nfunction parse360(str: string) {\n const int = parseFloat(str)\n return (((int % 360) + 360) % 360) / 360\n}\n\nfunction parse1(str: string) {\n const num = parseFloat(str)\n if (num < 0) return 0\n if (num > 1) return 255\n return Math.round(num * 255)\n}\n\nfunction parsePercentage(str: string) {\n // parseFloat conveniently ignores the final %\n const int = parseFloat(str)\n if (int < 0) return 0\n if (int > 100) return 1\n return int / 100\n}\n","import { normalizeColor } from './normalizeColor'\n\nexport function colorToRgba(input: string) {\n let int32Color = normalizeColor(input)\n if (int32Color === null) return input\n int32Color = int32Color || 0\n const r = (int32Color & 0xff000000) >>> 24\n const g = (int32Color & 0x00ff0000) >>> 16\n const b = (int32Color & 0x0000ff00) >>> 8\n const a = (int32Color & 0x000000ff) / 255\n return `rgba(${r}, ${g}, ${b}, ${a})`\n}\n","import * as G from './globals'\nimport { is } from './helpers'\nimport {\n Animatable,\n InterpolatorFn,\n EasingFunction,\n ExtrapolateType,\n InterpolatorConfig,\n InterpolatorFactory,\n} from '@react-spring/types'\n\nexport const createInterpolator: InterpolatorFactory = (\n range: readonly number[] | InterpolatorFn | InterpolatorConfig,\n output?: readonly Animatable[],\n extrapolate?: ExtrapolateType\n) => {\n if (is.fun(range)) {\n return range\n }\n\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output: output!,\n extrapolate,\n })\n }\n\n if (is.str(range.output[0])) {\n return G.createStringInterpolator(range as any) as any\n }\n\n const config = range as InterpolatorConfig\n const outputRange = config.output\n const inputRange = config.range || [0, 1]\n\n const extrapolateLeft =\n config.extrapolateLeft || config.extrapolate || 'extend'\n const extrapolateRight =\n config.extrapolateRight || config.extrapolate || 'extend'\n const easing = config.easing || (t => t)\n\n return (input: number) => {\n const range = findRange(input, inputRange)\n return interpolate(\n input,\n inputRange[range],\n inputRange[range + 1],\n outputRange[range],\n outputRange[range + 1],\n easing,\n extrapolateLeft,\n extrapolateRight,\n config.map\n )\n }\n}\n\nfunction interpolate(\n input: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n easing: EasingFunction,\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType,\n map?: (x: number) => number\n) {\n let result = map ? map(input) : input\n // Extrapolate\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result\n else if (extrapolateLeft === 'clamp') result = inputMin\n }\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result\n else if (extrapolateRight === 'clamp') result = inputMax\n }\n if (outputMin === outputMax) return outputMin\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax\n // Input Range\n if (inputMin === -Infinity) result = -result\n else if (inputMax === Infinity) result = result - inputMin\n else result = (result - inputMin) / (inputMax - inputMin)\n // Easing\n result = easing(result)\n // Output Range\n if (outputMin === -Infinity) result = -result\n else if (outputMax === Infinity) result = result + outputMin\n else result = result * (outputMax - outputMin) + outputMin\n return result\n}\n\nfunction findRange(input: number, inputRange: readonly number[]) {\n // eslint-disable-next-line no-var\n for (var i = 1; i < inputRange.length - 1; ++i)\n if (inputRange[i] >= input) break\n return i - 1\n}\n","import { EasingFunction } from '@react-spring/types'\n\nimport { clamp } from './clamp'\n\nexport type Direction = 'start' | 'end'\n\ntype StepsEasing = (steps: number, direction?: Direction) => EasingFunction\n\nconst steps: StepsEasing =\n (steps: number, direction: Direction = 'end') =>\n (progress: number) => {\n progress =\n direction === 'end'\n ? Math.min(progress, 0.999)\n : Math.max(progress, 0.001)\n const expanded = progress * steps\n const rounded =\n direction === 'end' ? Math.floor(expanded) : Math.ceil(expanded)\n\n return clamp(0, 1, rounded / steps)\n }\n\n/**\n * With thanks to ai easings.net\n * https://github.com/ai/easings.net/blob/master/src/easings/easingsFunctions.ts\n */\ninterface EasingDictionary {\n linear: (t: number) => number\n easeInQuad: (t: number) => number\n easeOutQuad: (t: number) => number\n easeInOutQuad: (t: number) => number\n easeInCubic: (t: number) => number\n easeOutCubic: (t: number) => number\n easeInOutCubic: (t: number) => number\n easeInQuart: (t: number) => number\n easeOutQuart: (t: number) => number\n easeInOutQuart: (t: number) => number\n easeInQuint: (t: number) => number\n easeOutQuint: (t: number) => number\n easeInOutQuint: (t: number) => number\n easeInSine: (t: number) => number\n easeOutSine: (t: number) => number\n easeInOutSine: (t: number) => number\n easeInExpo: (t: number) => number\n easeOutExpo: (t: number) => number\n easeInOutExpo: (t: number) => number\n easeInCirc: (t: number) => number\n easeOutCirc: (t: number) => number\n easeInOutCirc: (t: number) => number\n easeInBack: (t: number) => number\n easeOutBack: (t: number) => number\n easeInOutBack: (t: number) => number\n easeInElastic: (t: number) => number\n easeOutElastic: (t: number) => number\n easeInOutElastic: (t: number) => number\n easeInBounce: (t: number) => number\n easeOutBounce: (t: number) => number\n easeInOutBounce: (t: number) => number\n steps: StepsEasing\n}\n\nconst c1 = 1.70158\nconst c2 = c1 * 1.525\nconst c3 = c1 + 1\nconst c4 = (2 * Math.PI) / 3\nconst c5 = (2 * Math.PI) / 4.5\n\nconst bounceOut: EasingFunction = x => {\n const n1 = 7.5625\n const d1 = 2.75\n\n if (x < 1 / d1) {\n return n1 * x * x\n } else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75\n } else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375\n } else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375\n }\n}\n\nexport const easings: EasingDictionary = {\n linear: x => x,\n easeInQuad: x => x * x,\n easeOutQuad: x => 1 - (1 - x) * (1 - x),\n easeInOutQuad: x => (x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2),\n easeInCubic: x => x * x * x,\n easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n easeInOutCubic: x =>\n x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n easeInQuart: x => x * x * x * x,\n easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n easeInOutQuart: x =>\n x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n easeInQuint: x => x * x * x * x * x,\n easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n easeInOutQuint: x =>\n x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n easeInSine: x => 1 - Math.cos((x * Math.PI) / 2),\n easeOutSine: x => Math.sin((x * Math.PI) / 2),\n easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n easeInExpo: x => (x === 0 ? 0 : Math.pow(2, 10 * x - 10)),\n easeOutExpo: x => (x === 1 ? 1 : 1 - Math.pow(2, -10 * x)),\n easeInOutExpo: x =>\n x === 0\n ? 0\n : x === 1\n ? 1\n : x < 0.5\n ? Math.pow(2, 20 * x - 10) / 2\n : (2 - Math.pow(2, -20 * x + 10)) / 2,\n easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n easeInOutCirc: x =>\n x < 0.5\n ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2\n : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n easeInBack: x => c3 * x * x * x - c1 * x * x,\n easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n easeInOutBack: x =>\n x < 0.5\n ? (Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2)) / 2\n : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n easeInElastic: x =>\n x === 0\n ? 0\n : x === 1\n ? 1\n : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n easeOutElastic: x =>\n x === 0\n ? 0\n : x === 1\n ? 1\n : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n easeInOutElastic: x =>\n x === 0\n ? 0\n : x === 1\n ? 1\n : x < 0.5\n ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2\n : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 +\n 1,\n easeInBounce: x => 1 - bounceOut(1 - x),\n easeOutBounce: bounceOut,\n easeInOutBounce: x =>\n x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2,\n steps,\n} as const\n","/**\n * MIT License\n * Copyright (c) Alec Larson\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nconst $get = Symbol.for('FluidValue.get')\nconst $observers = Symbol.for('FluidValue.observers')\n\nexport {\n FluidValue,\n hasFluidValue,\n getFluidValue,\n getFluidObservers,\n callFluidObserver,\n callFluidObservers,\n // Mutations\n setFluidGetter,\n addFluidObserver,\n removeFluidObserver,\n}\n\n/** Returns true if `arg` can be observed. */\nconst hasFluidValue = (arg: any): arg is FluidValue => Boolean(arg && arg[$get])\n\n/**\n * Get the current value.\n * If `arg` is not observable, `arg` is returned.\n */\nconst getFluidValue: GetFluidValue = (arg: any) =>\n arg && arg[$get] ? arg[$get]() : arg\n\n/** Get the current observer set. Never mutate it directly! */\nconst getFluidObservers: GetFluidObservers = (target: any) =>\n target[$observers] || null\n\n/** Send an event to an observer. */\nfunction callFluidObserver(\n observer: FluidObserver,\n event: E\n): void\n\nfunction callFluidObserver(observer: any, event: FluidEvent) {\n if (observer.eventObserved) {\n observer.eventObserved(event)\n } else {\n observer(event)\n }\n}\n\n/** Send an event to all observers. */\nfunction callFluidObservers(\n target: FluidValue,\n event: E\n): void\n\nfunction callFluidObservers(target: object, event: FluidEvent): void\n\nfunction callFluidObservers(target: any, event: FluidEvent) {\n const observers: Set = target[$observers]\n if (observers) {\n observers.forEach(observer => {\n callFluidObserver(observer, event)\n })\n }\n}\n\ntype GetFluidValue = {\n (target: T | FluidValue): Exclude | U\n}\n\ntype GetFluidObservers = {\n (\n target: FluidValue\n ): ReadonlySet> | null\n (target: object): ReadonlySet | null\n}\n\n/** An event sent to `FluidObserver` objects. */\nexport interface FluidEvent {\n type: string\n parent: FluidValue\n}\n\n/**\n * Extend this class for automatic TypeScript support when passing this\n * value to `fluids`-compatible libraries.\n */\nabstract class FluidValue = any> {\n // @ts-expect-error (TS 4.4)\n private [$get]: () => T\n // @ts-expect-error (TS 4.4)\n private [$observers]?: Set>\n\n constructor(get?: () => T) {\n if (!get && !(get = this.get)) {\n throw Error('Unknown getter')\n }\n setFluidGetter(this, get)\n }\n\n /** Get the current value. */\n protected get?(): T\n /** Called after an observer is added. */\n protected observerAdded?(count: number, observer: FluidObserver): void\n /** Called after an observer is removed. */\n protected observerRemoved?(count: number, observer: FluidObserver): void\n}\n\n/** An observer of `FluidValue` objects. */\nexport type FluidObserver =\n | { eventObserved(event: E): void }\n | { (event: E): void }\n\n/** Add the `FluidValue` type to every property. */\nexport type FluidProps = T extends object\n ? { [P in keyof T]: T[P] | FluidValue> }\n : unknown\n\n/** Remove the `FluidValue` type from every property. */\nexport type StaticProps = {\n [P in keyof T]: T[P] extends FluidValue ? U : T[P]\n}\n\n/** Define the getter called by `getFluidValue`. */\nconst setFluidGetter = (target: object, get: () => any) =>\n setHidden(target, $get, get)\n\n/** Observe a `fluids`-compatible object. */\nfunction addFluidObserver(\n target: FluidValue,\n observer: FluidObserver\n): typeof observer\n\nfunction addFluidObserver(\n target: object,\n observer: FluidObserver\n): typeof observer\n\nfunction addFluidObserver(target: any, observer: FluidObserver) {\n if (target[$get]) {\n let observers: Set = target[$observers]\n if (!observers) {\n setHidden(target, $observers, (observers = new Set()))\n }\n if (!observers.has(observer)) {\n observers.add(observer)\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer)\n }\n }\n }\n return observer\n}\n\n/** Stop observing a `fluids`-compatible object. */\nfunction removeFluidObserver(\n target: FluidValue,\n observer: FluidObserver\n): void\n\nfunction removeFluidObserver(\n target: object,\n observer: FluidObserver\n): void\n\nfunction removeFluidObserver(target: any, observer: FluidObserver) {\n const observers: Set = target[$observers]\n if (observers && observers.has(observer)) {\n const count = observers.size - 1\n if (count) {\n observers.delete(observer)\n } else {\n target[$observers] = null\n }\n if (target.observerRemoved) {\n target.observerRemoved(count, observer)\n }\n }\n}\n\nconst setHidden = (target: any, key: any, value: any) =>\n Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true,\n })\n","// Problem: https://github.com/animatedjs/animated/pull/102\n// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662\nexport const numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g\n\n// Covers rgb, rgba, hsl, hsla\n// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e\nexport const colorRegex =\n /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi\n\n// Gets numbers with units when specified\nexport const unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i')\n\n// get values of rgba string\nexport const rgbaRegex =\n /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi\n\n/**\n * Parse special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n */\nexport const cssVariableRegex =\n /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/\n","import { isSSR } from './helpers'\nimport { cssVariableRegex } from './regexs'\n\n/**\n * takes a CSS variable and attempts\n * to turn it into a RGBA value\n *\n * ```\n * 'var(--white)' => 'rgba(255,255,255,1)'\n * ```\n *\n * @param input string\n * @returns string\n */\nexport const variableToRgba = (input: string): string => {\n const [token, fallback] = parseCSSVariable(input)\n\n if (!token || isSSR()) {\n return input\n }\n\n const value = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(token)\n\n if (value) {\n /**\n * We have a valid variable returned\n * trim and return\n */\n return value.trim()\n } else if (fallback && fallback.startsWith('--')) {\n /**\n * fallback is something like --my-variable\n * so we try get property value\n */\n const value = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(fallback)\n\n /**\n * if it exists, return else nothing was found so just return the input\n */\n if (value) {\n return value\n } else {\n return input\n }\n } else if (fallback && cssVariableRegex.test(fallback)) {\n /**\n * We have a fallback and it's another CSS variable\n */\n return variableToRgba(fallback)\n } else if (fallback) {\n /**\n * We have a fallback and it's not a CSS variable\n */\n return fallback\n }\n\n /**\n * Nothing worked so just return the input\n * like our other FluidValue replace functions do\n */\n return input\n}\n\nconst parseCSSVariable = (current: string) => {\n const match = cssVariableRegex.exec(current)\n if (!match) return [,]\n\n const [, token, fallback] = match\n return [token, fallback]\n}\n","import { InterpolatorConfig } from '@react-spring/types'\n\nimport { getFluidValue } from './fluids'\nimport { createInterpolator } from './createInterpolator'\nimport { colorToRgba } from './colorToRgba'\nimport * as G from './globals'\nimport {\n cssVariableRegex,\n colorRegex,\n unitRegex,\n numberRegex,\n rgbaRegex,\n} from './regexs'\nimport { variableToRgba } from './variableToRgba'\n\n// Covers color names (transparent, blue, etc.)\nlet namedColorRegex: RegExp\n\n// rgba requires that the r,g,b are integers.... so we want to round them,\n// but we *dont* want to round the opacity (4th column).\nconst rgbaRound = (_: any, p1: number, p2: number, p3: number, p4: number) =>\n `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * \"rgba(123, 42, 99, 0.36)\" // colors\n * \"-45deg\" // values with units\n * \"0 2px 2px 0px rgba(0, 0, 0, 0.12)\" // CSS box-shadows\n * \"rotate(0deg) translate(2px, 3px)\" // CSS transforms\n */\nexport const createStringInterpolator = (\n config: InterpolatorConfig\n) => {\n if (!namedColorRegex)\n namedColorRegex = G.colors\n ? // match color names, ignore partial matches\n new RegExp(`(${Object.keys(G.colors).join('|')})(?!\\\\w)`, 'g')\n : // never match\n /^\\b$/\n\n // Convert colors to rgba(...)\n const output = config.output.map(value => {\n return getFluidValue(value)\n .replace(cssVariableRegex, variableToRgba)\n .replace(colorRegex, colorToRgba)\n .replace(namedColorRegex, colorToRgba)\n })\n\n // Convert [\"1px 2px\", \"0px 0px\"] into [[1, 2], [0, 0]]\n const keyframes = output.map(value => value.match(numberRegex)!.map(Number))\n\n // Convert [\"1px 2px\", \"0px 0px\"] into [[1, 0], [2, 0]]\n const outputRanges = keyframes[0].map((_, i) =>\n keyframes.map(values => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal')\n }\n return values[i]\n })\n )\n\n // Create an interpolator for each animated number\n const interpolators = outputRanges.map(output =>\n createInterpolator({ ...config, output })\n )\n\n // Use the first `output` as a template for each call\n return (input: number) => {\n // Convert numbers to units if available (allows for [\"0\", \"100%\"])\n const missingUnit =\n !unitRegex.test(output[0]) &&\n output.find(value => unitRegex.test(value))?.replace(numberRegex, '')\n\n let i = 0\n return output[0]\n .replace(\n numberRegex,\n () => `${interpolators[i++](input)}${missingUnit || ''}`\n )\n .replace(rgbaRegex, rgbaRound)\n }\n}\n","declare const console: any\n\nexport const prefix = 'react-spring: '\n\nexport const once = any>(fn: TFunc) => {\n const func = fn\n let called = false\n\n if (typeof func != 'function') {\n throw new TypeError(`${prefix}once requires a function parameter`)\n }\n\n return (...args: any) => {\n if (!called) {\n func(...args)\n called = true\n }\n }\n}\n\nconst warnInterpolate = once(console.warn)\nexport function deprecateInterpolate() {\n warnInterpolate(\n `${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`\n )\n}\n\nconst warnDirectCall = once(console.warn)\nexport function deprecateDirectCall() {\n warnDirectCall(\n `${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`\n )\n}\n","import * as G from './globals'\nimport { is, isSSR } from './helpers'\nimport { cssVariableRegex } from './regexs'\n\n// Not all strings can be animated (eg: {display: \"none\"})\nexport function isAnimatedString(value: unknown): value is string {\n return (\n is.str(value) &&\n (value[0] == '#' ||\n /\\d/.test(value) ||\n // Do not identify a CSS variable as an AnimatedString if its SSR\n (!isSSR() && cssVariableRegex.test(value)) ||\n value in (G.colors || {}))\n )\n}\n","import { raf } from '@react-spring/rafz'\nimport { onResize } from '../resize'\n\nimport { ScrollInfo, ScrollHandler } from './ScrollHandler'\n\nexport type OnScrollCallback = (info: ScrollInfo) => void\n\nexport type OnScrollOptions = {\n /**\n * The root container to measure against\n */\n container?: HTMLElement\n}\n\nconst scrollListeners = new WeakMap boolean>()\nconst resizeListeners = new WeakMap()\nconst onScrollHandlers = new WeakMap>()\n\nconst getTarget = (container: HTMLElement) =>\n container === document.documentElement ? window : container\n\nexport const onScroll = (\n callback: OnScrollCallback,\n { container = document.documentElement }: OnScrollOptions = {}\n) => {\n /**\n * get the current handlers for the target\n */\n let containerHandlers = onScrollHandlers.get(container)\n\n /**\n * If there aren't any handlers then create a new set.\n */\n if (!containerHandlers) {\n containerHandlers = new Set()\n onScrollHandlers.set(container, containerHandlers)\n }\n\n /**\n * Create a new ScrollHandler class and add it to the set.\n */\n const containerHandler = new ScrollHandler(callback, container)\n containerHandlers.add(containerHandler)\n\n /**\n * If there are no scrollListeners then we need to make them\n */\n if (!scrollListeners.has(container)) {\n /**\n * Return true so RAFZ continues to run it\n */\n const listener = () => {\n containerHandlers?.forEach(handler => handler.advance())\n return true\n }\n\n scrollListeners.set(container, listener)\n\n const target = getTarget(container)\n\n /**\n * Add resize handlers so we can correctly calculate the\n * scroll position on changes\n */\n window.addEventListener('resize', listener, { passive: true })\n\n if (container !== document.documentElement) {\n resizeListeners.set(container, onResize(listener, { container }))\n }\n\n /**\n * Add the actual scroll listener\n */\n target.addEventListener('scroll', listener, { passive: true })\n }\n\n /**\n * Start animation loop\n */\n const animateScroll = scrollListeners.get(container)!\n raf(animateScroll)\n\n return () => {\n /**\n * Clear it on cleanup\n */\n raf.cancel(animateScroll)\n\n /**\n * Check if we even have any handlers for this container.\n */\n const containerHandlers = onScrollHandlers.get(container)\n if (!containerHandlers) return\n\n containerHandlers.delete(containerHandler)\n\n if (containerHandlers.size) return\n\n /**\n * If no more handlers, remove the scroll listener too.\n */\n const listener = scrollListeners.get(container)\n scrollListeners.delete(container)\n\n if (listener) {\n getTarget(container).removeEventListener('scroll', listener)\n window.removeEventListener('resize', listener)\n\n resizeListeners.get(container)?.()\n }\n }\n}\n","import type { OnResizeCallback } from '.'\n\nlet observer: ResizeObserver | undefined\n\nconst resizeHandlers = new WeakMap>()\n\nconst handleObservation = (entries: ResizeObserverEntry[]) =>\n entries.forEach(({ target, contentRect }) => {\n return resizeHandlers.get(target)?.forEach(handler => handler(contentRect))\n })\n\nexport function resizeElement(handler: OnResizeCallback, target: HTMLElement) {\n /**\n * If there's a resize observer in the ENV then use that too.\n */\n if (!observer) {\n if (typeof ResizeObserver !== 'undefined') {\n observer = new ResizeObserver(handleObservation)\n }\n }\n\n /**\n * Fetch the handlers for the target\n */\n let elementHandlers = resizeHandlers.get(target)\n\n /**\n * If there are no handlers create a new set for the target\n * and then add to the map\n */\n if (!elementHandlers) {\n elementHandlers = new Set()\n resizeHandlers.set(target, elementHandlers)\n }\n\n /**\n * Add the handler to the target's set\n * and observe the target if possible.\n */\n elementHandlers.add(handler)\n\n if (observer) {\n observer.observe(target)\n }\n\n /**\n * Cleanup the event handlers and potential observers.\n */\n return () => {\n const elementHandlers = resizeHandlers.get(target)\n\n if (!elementHandlers) return\n\n elementHandlers.delete(handler)\n\n if (!elementHandlers.size && observer) {\n observer.unobserve(target)\n }\n }\n}\n","import type { OnResizeCallback } from '.'\n\nconst listeners = new Set()\n\nlet cleanupWindowResizeHandler: VoidFunction | undefined\n\nconst createResizeHandler = () => {\n const handleResize = () => {\n listeners.forEach(callback =>\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n )\n }\n\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n}\n\nexport const resizeWindow = (callback: OnResizeCallback) => {\n listeners.add(callback)\n\n if (!cleanupWindowResizeHandler) {\n cleanupWindowResizeHandler = createResizeHandler()\n }\n\n return () => {\n listeners.delete(callback)\n\n if (!listeners.size && cleanupWindowResizeHandler) {\n cleanupWindowResizeHandler()\n cleanupWindowResizeHandler = undefined\n }\n }\n}\n","import { resizeElement } from './resizeElement'\nimport { resizeWindow } from './resizeWindow'\n\nexport interface OnResizeOptions {\n container?: HTMLElement\n}\n\nexport type OnResizeCallback = (\n rect: Pick &\n Partial>\n) => void\n\nexport const onResize = (\n callback: OnResizeCallback,\n { container = document.documentElement }: OnResizeOptions = {}\n): (() => void) => {\n if (container === document.documentElement) {\n return resizeWindow(callback)\n } else {\n return resizeElement(callback, container)\n }\n}\n","export const progress = (min: number, max: number, value: number) =>\n max - min === 0 ? 1 : (value - min) / (max - min)\n","import { progress } from '../../progress'\n\nimport type { OnScrollCallback } from './index'\n\nconst SCROLL_KEYS = {\n x: {\n length: 'Width',\n position: 'Left',\n },\n y: {\n length: 'Height',\n position: 'Top',\n },\n} as const\n\n/**\n * Whilst user's may not need the scrollLength, it's easier to return\n * the whole state we're storing and let them pick what they want.\n */\nexport interface ScrollAxis {\n current: number\n progress: number\n scrollLength: number\n}\n\nexport interface ScrollInfo {\n time: number\n x: ScrollAxis\n y: ScrollAxis\n}\n\n/**\n * Why use a class? More extensible in the future.\n */\nexport class ScrollHandler {\n protected callback: OnScrollCallback\n protected container: HTMLElement\n protected info: ScrollInfo\n\n constructor(callback: OnScrollCallback, container: HTMLElement) {\n this.callback = callback\n this.container = container\n\n this.info = {\n time: 0,\n x: this.createAxis(),\n y: this.createAxis(),\n }\n }\n\n private createAxis = (): ScrollAxis => ({\n current: 0,\n progress: 0,\n scrollLength: 0,\n })\n\n private updateAxis = (axisName: keyof Pick) => {\n const axis = this.info[axisName]\n const { length, position } = SCROLL_KEYS[axisName]\n\n axis.current = this.container[`scroll${position}`]\n axis.scrollLength =\n this.container[`scroll${length}`] - this.container[`client${length}`]\n\n axis.progress = progress(0, axis.scrollLength, axis.current)\n }\n\n private update = () => {\n this.updateAxis('x')\n this.updateAxis('y')\n }\n\n private sendEvent = () => {\n this.callback(this.info)\n }\n\n advance = () => {\n this.update()\n this.sendEvent()\n }\n}\n","import { useRef } from 'react'\n\ntype Init = () => T\n\n/**\n * Creates a constant value over the lifecycle of a component.\n */\nexport function useConstant(init: Init) {\n const ref = useRef(null)\n\n if (ref.current === null) {\n ref.current = init()\n }\n\n return ref.current\n}\n","import { useState } from 'react'\nimport { useIsMounted } from './useIsMounted'\n\n/** Return a function that re-renders this component, if still mounted */\nexport function useForceUpdate() {\n const update = useState()[1]\n const isMounted = useIsMounted()\n return () => {\n if (isMounted.current) {\n update(Math.random())\n }\n }\n}\n","import { useRef } from 'react'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false)\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return isMounted\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\nimport { isSSR } from '../helpers'\n\n/**\n * Use this to read layout from the DOM and synchronously\n * re-render if the isSSR returns true. Updates scheduled\n * inside `useIsomorphicLayoutEffect` will be flushed\n * synchronously in the browser, before the browser has\n * a chance to paint.\n */\nexport const useIsomorphicLayoutEffect = isSSR() ? useEffect : useLayoutEffect\n","import { useEffect, useRef, useState } from 'react'\n\ntype Cache = {\n inputs?: any[]\n result?: T\n}\n\n// TODO: remove once merged (https://github.com/alexreardon/use-memo-one/pull/10)\nexport function useMemoOne(getResult: () => T, inputs?: any[]): T {\n const [initial] = useState(\n (): Cache => ({\n inputs,\n result: getResult(),\n })\n )\n\n const committed = useRef>()\n const prevCache = committed.current\n\n let cache = prevCache\n if (cache) {\n const useCache = Boolean(\n inputs && cache.inputs && areInputsEqual(inputs, cache.inputs)\n )\n if (!useCache) {\n cache = {\n inputs,\n result: getResult(),\n }\n }\n } else {\n cache = initial\n }\n\n useEffect(() => {\n committed.current = cache\n if (prevCache == initial) {\n initial.inputs = initial.result = undefined\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cache])\n\n return cache.result!\n}\n\nfunction areInputsEqual(next: any[], prev: any[]) {\n if (next.length !== prev.length) {\n return false\n }\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false\n }\n }\n return true\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useEffect, EffectCallback } from 'react'\n\nexport const useOnce = (effect: EffectCallback) => useEffect(effect, emptyDeps)\n\nconst emptyDeps: any[] = []\n","import { useEffect, useRef } from 'react'\n\n/** Use a value from the previous render */\nexport function usePrev(value: T): T | undefined {\n const prevRef = useRef()\n useEffect(() => {\n prevRef.current = value\n })\n return prevRef.current\n}\n","import { useState } from 'react'\n\nimport { assign } from '../globals'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'\n\n/**\n * Returns `boolean` or `null`, used to automatically\n * set skipAnimations to the value of the user's\n * `prefers-reduced-motion` query.\n *\n * The return value, post-effect, is the value of their prefered setting\n */\nexport const useReducedMotion = () => {\n const [reducedMotion, setReducedMotion] = useState(null)\n\n useIsomorphicLayoutEffect(() => {\n const mql = window.matchMedia('(prefers-reduced-motion)')\n\n const handleMediaChange = (e: MediaQueryListEvent | MediaQueryList) => {\n setReducedMotion(e.matches)\n\n assign({\n skipAnimation: e.matches,\n })\n }\n\n handleMediaChange(mql)\n\n if (mql.addEventListener) {\n mql.addEventListener('change', handleMediaChange)\n } else {\n mql.addListener(handleMediaChange)\n }\n\n return () => {\n if (mql.removeEventListener) {\n mql.removeEventListener('change', handleMediaChange)\n } else {\n mql.removeListener(handleMediaChange)\n }\n }\n }, [])\n\n return reducedMotion\n}\n","import * as Globals from './globals'\nexport { Globals }\n\nexport * from './FrameLoop'\nexport * from './clamp'\nexport * from './colors'\nexport * from './colorToRgba'\nexport * from './colorMatchers'\nexport * from './createInterpolator'\nexport * from './easings'\nexport * from './stringInterpolation'\nexport * from './deprecations'\nexport * from './helpers'\nexport * from './isAnimatedString'\n/**\n * Should these be moved to a DOM only\n * package to avoid native issues?\n */\nexport * from './dom-events/scroll'\nexport * from './dom-events/resize'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useForceUpdate'\nexport * from './hooks/useMemoOne'\nexport * from './hooks/useOnce'\nexport * from './hooks/usePrev'\nexport * from './hooks/useIsomorphicLayoutEffect'\nexport * from './hooks/useReducedMotion'\n\nexport * from './fluids'\n\nexport { raf } from '@react-spring/rafz'\nexport type { Timeout } from '@react-spring/rafz'\n","// src/Animated.ts\nimport { defineHidden } from \"@react-spring/shared\";\nvar $node = Symbol.for(\"Animated:node\");\nvar isAnimated = (value) => !!value && value[$node] === value;\nvar getAnimated = (owner) => owner && owner[$node];\nvar setAnimated = (owner, node) => defineHidden(owner, $node, node);\nvar getPayload = (owner) => owner && owner[$node] && owner[$node].getPayload();\nvar Animated = class {\n constructor() {\n setAnimated(this, this);\n }\n /** Get every `AnimatedValue` used by this node. */\n getPayload() {\n return this.payload || [];\n }\n};\n\n// src/AnimatedValue.ts\nimport { is } from \"@react-spring/shared\";\nvar AnimatedValue = class extends Animated {\n constructor(_value) {\n super();\n this._value = _value;\n this.done = true;\n this.durationProgress = 0;\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n /** @internal */\n static create(value) {\n return new AnimatedValue(value);\n }\n getPayload() {\n return [this];\n }\n getValue() {\n return this._value;\n }\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n if (step) {\n value = Math.round(value / step) * step;\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n if (this._value === value) {\n return false;\n }\n this._value = value;\n return true;\n }\n reset() {\n const { done } = this;\n this.done = false;\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.durationProgress = 0;\n this.lastPosition = this._value;\n if (done)\n this.lastVelocity = null;\n this.v0 = null;\n }\n }\n};\n\n// src/AnimatedString.ts\nimport { is as is2, createInterpolator } from \"@react-spring/shared\";\nvar AnimatedString = class extends AnimatedValue {\n constructor(value) {\n super(0);\n this._string = null;\n this._toString = createInterpolator({\n output: [value, value]\n });\n }\n /** @internal */\n static create(value) {\n return new AnimatedString(value);\n }\n getValue() {\n const value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n setValue(value) {\n if (is2.str(value)) {\n if (value == this._string) {\n return false;\n }\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n return true;\n }\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n this._value = 0;\n super.reset();\n }\n};\n\n// src/AnimatedArray.ts\nimport { isAnimatedString } from \"@react-spring/shared\";\n\n// src/AnimatedObject.ts\nimport {\n each,\n eachProp,\n getFluidValue,\n hasFluidValue\n} from \"@react-spring/shared\";\n\n// src/context.ts\nvar TreeContext = { dependencies: null };\n\n// src/AnimatedObject.ts\nvar AnimatedObject = class extends Animated {\n constructor(source) {\n super();\n this.source = source;\n this.setValue(source);\n }\n getValue(animated) {\n const values = {};\n eachProp(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else if (hasFluidValue(source)) {\n values[key] = getFluidValue(source);\n } else if (!animated) {\n values[key] = source;\n }\n });\n return values;\n }\n /** Replace the raw object data */\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n reset() {\n if (this.payload) {\n each(this.payload, (node) => node.reset());\n }\n }\n /** Create a payload set. */\n _makePayload(source) {\n if (source) {\n const payload = /* @__PURE__ */ new Set();\n eachProp(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n /** Add to a payload set. */\n _addToPayload(source) {\n if (TreeContext.dependencies && hasFluidValue(source)) {\n TreeContext.dependencies.add(source);\n }\n const payload = getPayload(source);\n if (payload) {\n each(payload, (node) => this.add(node));\n }\n }\n};\n\n// src/AnimatedArray.ts\nvar AnimatedArray = class extends AnimatedObject {\n constructor(source) {\n super(source);\n }\n /** @internal */\n static create(source) {\n return new AnimatedArray(source);\n }\n getValue() {\n return this.source.map((node) => node.getValue());\n }\n setValue(source) {\n const payload = this.getPayload();\n if (source.length == payload.length) {\n return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n }\n super.setValue(source.map(makeAnimated));\n return true;\n }\n};\nfunction makeAnimated(value) {\n const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n return nodeType.create(value);\n}\n\n// src/getAnimatedType.ts\nimport { is as is3, isAnimatedString as isAnimatedString2 } from \"@react-spring/shared\";\nfunction getAnimatedType(value) {\n const parentNode = getAnimated(value);\n return parentNode ? parentNode.constructor : is3.arr(value) ? AnimatedArray : isAnimatedString2(value) ? AnimatedString : AnimatedValue;\n}\n\n// src/createHost.ts\nimport { is as is5, eachProp as eachProp2 } from \"@react-spring/shared\";\n\n// src/withAnimated.tsx\nimport * as React from \"react\";\nimport { forwardRef, useRef, useCallback, useEffect } from \"react\";\nimport {\n is as is4,\n each as each2,\n raf,\n useForceUpdate,\n useOnce,\n addFluidObserver,\n removeFluidObserver,\n useIsomorphicLayoutEffect\n} from \"@react-spring/shared\";\nvar withAnimated = (Component, host) => {\n const hasInstance = (\n // Function components must use \"forwardRef\" to avoid being\n // re-rendered on every animation frame.\n !is4.fun(Component) || Component.prototype && Component.prototype.isReactComponent\n );\n return forwardRef((givenProps, givenRef) => {\n const instanceRef = useRef(null);\n const ref = hasInstance && // eslint-disable-next-line react-hooks/rules-of-hooks\n useCallback(\n (value) => {\n instanceRef.current = updateRef(givenRef, value);\n },\n [givenRef]\n );\n const [props, deps] = getAnimatedState(givenProps, host);\n const forceUpdate = useForceUpdate();\n const callback = () => {\n const instance = instanceRef.current;\n if (hasInstance && !instance) {\n return;\n }\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n if (didUpdate === false) {\n forceUpdate();\n }\n };\n const observer = new PropsObserver(callback, deps);\n const observerRef = useRef();\n useIsomorphicLayoutEffect(() => {\n observerRef.current = observer;\n each2(deps, (dep) => addFluidObserver(dep, observer));\n return () => {\n if (observerRef.current) {\n each2(\n observerRef.current.deps,\n (dep) => removeFluidObserver(dep, observerRef.current)\n );\n raf.cancel(observerRef.current.update);\n }\n };\n });\n useEffect(callback, []);\n useOnce(() => () => {\n const observer2 = observerRef.current;\n each2(observer2.deps, (dep) => removeFluidObserver(dep, observer2));\n });\n const usedProps = host.getComponentProps(props.getValue());\n return /* @__PURE__ */ React.createElement(Component, { ...usedProps, ref });\n });\n};\nvar PropsObserver = class {\n constructor(update, deps) {\n this.update = update;\n this.deps = deps;\n }\n eventObserved(event) {\n if (event.type == \"change\") {\n raf.write(this.update);\n }\n }\n};\nfunction getAnimatedState(props, host) {\n const dependencies = /* @__PURE__ */ new Set();\n TreeContext.dependencies = dependencies;\n if (props.style)\n props = {\n ...props,\n style: host.createAnimatedStyle(props.style)\n };\n props = new AnimatedObject(props);\n TreeContext.dependencies = null;\n return [props, dependencies];\n}\nfunction updateRef(ref, value) {\n if (ref) {\n if (is4.fun(ref))\n ref(value);\n else\n ref.current = value;\n }\n return value;\n}\n\n// src/createHost.ts\nvar cacheKey = Symbol.for(\"AnimatedComponent\");\nvar createHost = (components, {\n applyAnimatedValues = () => false,\n createAnimatedStyle = (style) => new AnimatedObject(style),\n getComponentProps = (props) => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues,\n createAnimatedStyle,\n getComponentProps\n };\n const animated = (Component) => {\n const displayName = getDisplayName(Component) || \"Anonymous\";\n if (is5.str(Component)) {\n Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n Component.displayName = `Animated(${displayName})`;\n return Component;\n };\n eachProp2(components, (Component, key) => {\n if (is5.arr(components)) {\n key = getDisplayName(Component);\n }\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\nvar getDisplayName = (arg) => is5.str(arg) ? arg : arg && is5.str(arg.displayName) ? arg.displayName : is5.fun(arg) && arg.name || null;\nexport {\n Animated,\n AnimatedArray,\n AnimatedObject,\n AnimatedString,\n AnimatedValue,\n createHost,\n getAnimated,\n getAnimatedType,\n getPayload,\n isAnimated,\n setAnimated\n};\n//# sourceMappingURL=react-spring_animated.modern.mjs.map","// src/hooks/useChain.ts\nimport { each, useIsomorphicLayoutEffect } from \"@react-spring/shared\";\n\n// src/helpers.ts\nimport {\n is,\n toArray,\n eachProp,\n getFluidValue,\n isAnimatedString,\n Globals as G\n} from \"@react-spring/shared\";\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nvar matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nvar resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nvar getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : void 0;\nvar noopTransform = (value) => value;\nvar getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n const defaults2 = {};\n for (const key of keys) {\n const value = transform(props[key], key);\n if (!is.und(value)) {\n defaults2[key] = value;\n }\n }\n return defaults2;\n};\nvar DEFAULT_PROPS = [\n \"config\",\n \"onProps\",\n \"onStart\",\n \"onChange\",\n \"onPause\",\n \"onResume\",\n \"onRest\"\n];\nvar RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n // Transition props\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n // Internal props\n keys: 1,\n callId: 1,\n parentId: 1\n};\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n if (count) {\n return forward;\n }\n}\nfunction inferTo(props) {\n const to2 = getForwardProps(props);\n if (to2) {\n const out = { to: to2 };\n eachProp(props, (val, key) => key in to2 || (out[key] = val));\n return out;\n }\n return { ...props };\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? G.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props)\n return true;\n return false;\n}\nfunction isAsyncTo(to2) {\n return is.fun(to2) || is.arr(to2) && is.obj(to2[0]);\n}\nfunction detachRefs(ctrl, ref) {\n ctrl.ref?.delete(ctrl);\n ref?.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n ctrl.ref?.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\n// src/hooks/useChain.ts\nfunction useChain(refs, timeSteps, timeFrame = 1e3) {\n useIsomorphicLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay))\n delay = prevDelay;\n else\n prevDelay = delay;\n each(controllers, (ctrl) => {\n each(ctrl.queue, (props) => {\n const memoizedDelayProp = props.delay;\n props.delay = (key) => delay + callProp(memoizedDelayProp || 0, key);\n });\n });\n ref.start();\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, (ref) => {\n const controllers = ref.current;\n if (controllers.length) {\n const queues = controllers.map((ctrl) => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(\n controllers,\n (ctrl, i) => each(queues[i] || [], (update2) => ctrl.queue.push(update2))\n );\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\n// src/hooks/useSpring.ts\nimport { is as is9 } from \"@react-spring/shared\";\n\n// src/hooks/useSprings.ts\nimport { useContext as useContext2, useMemo, useRef } from \"react\";\nimport {\n is as is8,\n each as each5,\n usePrev,\n useOnce,\n useForceUpdate,\n useIsomorphicLayoutEffect as useIsomorphicLayoutEffect2\n} from \"@react-spring/shared\";\n\n// src/SpringValue.ts\nimport {\n is as is5,\n raf as raf3,\n each as each2,\n isEqual,\n toArray as toArray2,\n eachProp as eachProp3,\n frameLoop as frameLoop2,\n flushCalls,\n getFluidValue as getFluidValue2,\n isAnimatedString as isAnimatedString2,\n Globals as G5,\n callFluidObservers as callFluidObservers2,\n hasFluidValue,\n addFluidObserver,\n removeFluidObserver,\n getFluidObservers\n} from \"@react-spring/shared\";\nimport {\n AnimatedValue,\n AnimatedString,\n getPayload,\n getAnimated as getAnimated2,\n setAnimated,\n getAnimatedType\n} from \"@react-spring/animated\";\n\n// src/AnimationConfig.ts\nimport { is as is2, easings } from \"@react-spring/shared\";\n\n// src/constants.ts\nvar config = {\n default: { tension: 170, friction: 26 },\n gentle: { tension: 120, friction: 14 },\n wobbly: { tension: 180, friction: 12 },\n stiff: { tension: 210, friction: 20 },\n slow: { tension: 280, friction: 60 },\n molasses: { tension: 280, friction: 120 }\n};\n\n// src/AnimationConfig.ts\nvar defaults = {\n ...config.default,\n mass: 1,\n damping: 1,\n easing: easings.linear,\n clamp: false\n};\nvar AnimationConfig = class {\n constructor() {\n /**\n * The initial velocity of one or more values.\n *\n * @default 0\n */\n this.velocity = 0;\n Object.assign(this, defaults);\n }\n};\nfunction mergeConfig(config2, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = { ...defaultConfig };\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = { ...defaultConfig, ...newConfig };\n }\n sanitizeConfig(config2, newConfig);\n Object.assign(config2, newConfig);\n for (const key in defaults) {\n if (config2[key] == null) {\n config2[key] = defaults[key];\n }\n }\n let { frequency, damping } = config2;\n const { mass } = config2;\n if (!is2.und(frequency)) {\n if (frequency < 0.01)\n frequency = 0.01;\n if (damping < 0)\n damping = 0;\n config2.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config2.friction = 4 * Math.PI * damping * mass / frequency;\n }\n return config2;\n}\nfunction sanitizeConfig(config2, props) {\n if (!is2.und(props.decay)) {\n config2.duration = void 0;\n } else {\n const isTensionConfig = !is2.und(props.tension) || !is2.und(props.friction);\n if (isTensionConfig || !is2.und(props.frequency) || !is2.und(props.damping) || !is2.und(props.mass)) {\n config2.duration = void 0;\n config2.decay = void 0;\n }\n if (isTensionConfig) {\n config2.frequency = void 0;\n }\n }\n}\n\n// src/Animation.ts\nvar emptyArray = [];\nvar Animation = class {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n};\n\n// src/scheduleProps.ts\nimport { is as is3, raf, Globals as G2 } from \"@react-spring/shared\";\nfunction scheduleProps(callId, { key, props, defaultProps, state, actions }) {\n return new Promise((resolve, reject) => {\n let delay;\n let timeout;\n let cancel = matchProp(props.cancel ?? defaultProps?.cancel, key);\n if (cancel) {\n onStart();\n } else {\n if (!is3.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n let pause = defaultProps?.pause;\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n delay = callProp(props.delay || 0, key);\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n function onResume() {\n if (delay > 0 && !G2.skipAnimation) {\n state.delayed = true;\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n function onStart() {\n if (state.delayed) {\n state.delayed = false;\n }\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n try {\n actions.start({ ...props, callId, cancel }, resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\n// src/runAsync.ts\nimport {\n is as is4,\n raf as raf2,\n flush,\n eachProp as eachProp2,\n Globals as G3\n} from \"@react-spring/shared\";\n\n// src/AnimationResult.ts\nvar getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some((result) => result.cancelled) ? getCancelledResult(target.get()) : results.every((result) => result.noop) ? getNoopResult(target.get()) : getFinishedResult(\n target.get(),\n results.every((result) => result.finished)\n);\nvar getNoopResult = (value) => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nvar getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nvar getCancelledResult = (value) => ({\n value,\n cancelled: true,\n finished: false\n});\n\n// src/runAsync.ts\nfunction runAsync(to2, props, state, target) {\n const { callId, parentId, onRest } = props;\n const { asyncTo: prevTo, promise: prevPromise } = state;\n if (!parentId && to2 === prevTo && !props.reset) {\n return prevPromise;\n }\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to2;\n const defaultProps = getDefaultProps(\n props,\n (value, key) => (\n // The `onRest` prop is only called when the `runAsync` promise is resolved.\n key === \"onRest\" ? void 0 : value\n )\n );\n let preventBail;\n let bail;\n const bailPromise = new Promise(\n (resolve, reject) => (preventBail = resolve, bail = reject)\n );\n const bailIfEnded = (bailSignal) => {\n const bailResult = (\n // The `cancel` prop or `stop` method was used.\n callId <= (state.cancelId || 0) && getCancelledResult(target) || // The async `to` prop was replaced.\n callId !== state.asyncId && getFinishedResult(target, false)\n );\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAnimationSignal();\n return (async () => {\n if (G3.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n bailIfEnded(bailSignal);\n const props2 = is4.obj(arg1) ? { ...arg1 } : { ...arg2, to: arg1 };\n props2.parentId = callId;\n eachProp2(defaultProps, (value, key) => {\n if (is4.und(props2[key])) {\n props2[key] = value;\n }\n });\n const result2 = await target.start(props2);\n bailIfEnded(bailSignal);\n if (state.paused) {\n await new Promise((resume) => {\n state.resumeQueue.add(resume);\n });\n }\n return result2;\n })();\n };\n let result;\n if (G3.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n try {\n let animating;\n if (is4.arr(to2)) {\n animating = (async (queue) => {\n for (const props2 of queue) {\n await animate(props2);\n }\n })(to2);\n } else {\n animating = Promise.resolve(to2(animate, target.stop.bind(target)));\n }\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAnimationSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : void 0;\n state.promise = parentId ? prevPromise : void 0;\n }\n }\n if (is4.fun(onRest)) {\n raf2.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, (t) => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = void 0;\n if (cancelId)\n state.cancelId = cancelId;\n}\nvar BailSignal = class extends Error {\n constructor() {\n super(\n \"An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.\"\n );\n }\n};\nvar SkipAnimationSignal = class extends Error {\n constructor() {\n super(\"SkipAnimationSignal\");\n }\n};\n\n// src/FrameValue.ts\nimport {\n deprecateInterpolate,\n frameLoop,\n FluidValue as FluidValue2,\n Globals as G4,\n callFluidObservers\n} from \"@react-spring/shared\";\nimport { getAnimated } from \"@react-spring/animated\";\nvar isFrameValue = (value) => value instanceof FrameValue;\nvar nextId = 1;\nvar FrameValue = class extends FluidValue2 {\n constructor() {\n super(...arguments);\n this.id = nextId++;\n this._priority = 0;\n }\n get priority() {\n return this._priority;\n }\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n this._onPriorityChange(priority);\n }\n }\n /** Get the current value */\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n /** Create a spring that maps our value to another value */\n to(...args) {\n return G4.to(this, args);\n }\n /** @deprecated Use the `to` method instead. */\n interpolate(...args) {\n deprecateInterpolate();\n return G4.to(this, args);\n }\n toJSON() {\n return this.get();\n }\n observerAdded(count) {\n if (count == 1)\n this._attach();\n }\n observerRemoved(count) {\n if (count == 0)\n this._detach();\n }\n /** Called when the first child is added. */\n _attach() {\n }\n /** Called when the last child is removed. */\n _detach() {\n }\n /** Tell our children about our new value */\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: \"change\",\n parent: this,\n value,\n idle\n });\n }\n /** Tell our children about our new priority */\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n callFluidObservers(this, {\n type: \"priority\",\n parent: this,\n priority\n });\n }\n};\n\n// src/SpringPhase.ts\nvar $P = Symbol.for(\"SpringPhase\");\nvar HAS_ANIMATED = 1;\nvar IS_ANIMATING = 2;\nvar IS_PAUSED = 4;\nvar hasAnimated = (target) => (target[$P] & HAS_ANIMATED) > 0;\nvar isAnimating = (target) => (target[$P] & IS_ANIMATING) > 0;\nvar isPaused = (target) => (target[$P] & IS_PAUSED) > 0;\nvar setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nvar setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\n// src/SpringValue.ts\nvar SpringValue = class extends FrameValue {\n constructor(arg1, arg2) {\n super();\n /** The animation state */\n this.animation = new Animation();\n /** Some props have customizable default values */\n this.defaultProps = {};\n /** The state for `runAsync` calls */\n this._state = {\n paused: false,\n delayed: false,\n pauseQueue: /* @__PURE__ */ new Set(),\n resumeQueue: /* @__PURE__ */ new Set(),\n timeouts: /* @__PURE__ */ new Set()\n };\n /** The promise resolvers of pending `start` calls */\n this._pendingCalls = /* @__PURE__ */ new Set();\n /** The counter for tracking `scheduleProps` calls */\n this._lastCallId = 0;\n /** The last `scheduleProps` call that changed the `to` prop */\n this._lastToId = 0;\n this._memoizedDuration = 0;\n if (!is5.und(arg1) || !is5.und(arg2)) {\n const props = is5.obj(arg1) ? { ...arg1 } : { ...arg2, from: arg1 };\n if (is5.und(props.default)) {\n props.default = true;\n }\n this.start(props);\n }\n }\n /** Equals true when not advancing on each frame. */\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n get goal() {\n return getFluidValue2(this.animation.to);\n }\n get velocity() {\n const node = getAnimated2(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map((node2) => node2.lastVelocity || 0);\n }\n /**\n * When true, this value has been animated at least once.\n */\n get hasAnimated() {\n return hasAnimated(this);\n }\n /**\n * When true, this value has an unfinished animation,\n * which is either active or paused.\n */\n get isAnimating() {\n return isAnimating(this);\n }\n /**\n * When true, all current and future animations are paused.\n */\n get isPaused() {\n return isPaused(this);\n }\n /**\n *\n *\n */\n get isDelayed() {\n return this._state.delayed;\n }\n /** Advance the current animation by a number of milliseconds */\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let { toValues } = anim;\n const { config: config2 } = anim;\n const payload = getPayload(anim.to);\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray2(getFluidValue2(anim.to));\n }\n anim.values.forEach((node2, i) => {\n if (node2.done)\n return;\n const to2 = (\n // Animated strings always go from 0 to 1.\n node2.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i]\n );\n let finished = anim.immediate;\n let position = to2;\n if (!finished) {\n position = node2.lastPosition;\n if (config2.tension <= 0) {\n node2.done = true;\n return;\n }\n let elapsed = node2.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node2.v0 != null ? node2.v0 : node2.v0 = is5.arr(config2.velocity) ? config2.velocity[i] : config2.velocity;\n let velocity;\n const precision = config2.precision || (from == to2 ? 5e-3 : Math.min(1, Math.abs(to2 - from) * 1e-3));\n if (!is5.und(config2.duration)) {\n let p = 1;\n if (config2.duration > 0) {\n if (this._memoizedDuration !== config2.duration) {\n this._memoizedDuration = config2.duration;\n if (node2.durationProgress > 0) {\n node2.elapsedTime = config2.duration * node2.durationProgress;\n elapsed = node2.elapsedTime += dt;\n }\n }\n p = (config2.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node2.durationProgress = p;\n }\n position = from + config2.easing(p) * (to2 - from);\n velocity = (position - node2.lastPosition) / dt;\n finished = p == 1;\n } else if (config2.decay) {\n const decay = config2.decay === true ? 0.998 : config2.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node2.lastPosition - position) <= precision;\n velocity = v0 * e;\n } else {\n velocity = node2.lastVelocity == null ? v0 : node2.lastVelocity;\n const restVelocity = config2.restVelocity || precision / 10;\n const bounceFactor = config2.clamp ? 0 : config2.bounce;\n const canBounce = !is5.und(bounceFactor);\n const isGrowing = from == to2 ? node2.v0 > 0 : from < to2;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n if (!isMoving) {\n finished = Math.abs(to2 - position) <= precision;\n if (finished) {\n break;\n }\n }\n if (canBounce) {\n isBouncing = position == to2 || position > to2 == isGrowing;\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to2;\n }\n }\n const springForce = -config2.tension * 1e-6 * (position - to2);\n const dampingForce = -config2.friction * 1e-3 * velocity;\n const acceleration = (springForce + dampingForce) / config2.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n node2.lastVelocity = velocity;\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n if (payload && !payload[i].done) {\n finished = false;\n }\n if (finished) {\n node2.done = true;\n } else {\n idle = false;\n }\n if (node2.setValue(position, config2.round)) {\n changed = true;\n }\n });\n const node = getAnimated2(this);\n const currVal = node.getValue();\n if (idle) {\n const finalVal = getFluidValue2(anim.to);\n if ((currVal !== finalVal || changed) && !config2.decay) {\n node.setValue(finalVal);\n this._onChange(finalVal);\n } else if (changed && config2.decay) {\n this._onChange(currVal);\n }\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n /** Set the current value, while stopping the current animation */\n set(value) {\n raf3.batchedUpdates(() => {\n this._stop();\n this._focus(value);\n this._set(value);\n });\n return this;\n }\n /**\n * Freeze the active animation in time, as well as any updates merged\n * before `resume` is called.\n */\n pause() {\n this._update({ pause: true });\n }\n /** Resume the animation if paused. */\n resume() {\n this._update({ pause: false });\n }\n /** Skip to the end of the current animation. */\n finish() {\n if (isAnimating(this)) {\n const { to: to2, config: config2 } = this.animation;\n raf3.batchedUpdates(() => {\n this._onStart();\n if (!config2.decay) {\n this._set(to2, false);\n }\n this._stop();\n });\n }\n return this;\n }\n /** Push props into the pending queue. */\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n start(to2, arg2) {\n let queue;\n if (!is5.und(to2)) {\n queue = [is5.obj(to2) ? to2 : { ...arg2, to: to2 }];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n return Promise.all(\n queue.map((props) => {\n const up = this._update(props);\n return up;\n })\n ).then((results) => getCombinedResult(this, results));\n }\n /**\n * Stop the current animation, and cancel any delayed updates.\n *\n * Pass `true` to call `onRest` with `cancelled: true`.\n */\n stop(cancel) {\n const { to: to2 } = this.animation;\n this._focus(this.get());\n stopAsync(this._state, cancel && this._lastCallId);\n raf3.batchedUpdates(() => this._stop(to2, cancel));\n return this;\n }\n /** Restart the animation. */\n reset() {\n this._update({ reset: true });\n }\n /** @internal */\n eventObserved(event) {\n if (event.type == \"change\") {\n this._start();\n } else if (event.type == \"priority\") {\n this.priority = event.priority + 1;\n }\n }\n /**\n * Parse the `to` and `from` range from the given `props` object.\n *\n * This also ensures the initial value is available to animated components\n * during the render phase.\n */\n _prepareNode(props) {\n const key = this.key || \"\";\n let { to: to2, from } = props;\n to2 = is5.obj(to2) ? to2[key] : to2;\n if (to2 == null || isAsyncTo(to2)) {\n to2 = void 0;\n }\n from = is5.obj(from) ? from[key] : from;\n if (from == null) {\n from = void 0;\n }\n const range = { to: to2, from };\n if (!hasAnimated(this)) {\n if (props.reverse)\n [to2, from] = [from, to2];\n from = getFluidValue2(from);\n if (!is5.und(from)) {\n this._set(from);\n } else if (!getAnimated2(this)) {\n this._set(to2);\n }\n }\n return range;\n }\n /** Every update is processed by this method before merging. */\n _update({ ...props }, isLoop) {\n const { key, defaultProps } = this;\n if (props.default)\n Object.assign(\n defaultProps,\n getDefaultProps(\n props,\n (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value\n )\n );\n mergeActiveFn(this, props, \"onProps\");\n sendEvent(this, \"onProps\", props, this);\n const range = this._prepareNode(props);\n if (Object.isFrozen(this)) {\n throw Error(\n \"Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?\"\n );\n }\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(\n this,\n \"onPause\",\n getFinishedResult(this, checkFinished(this, this.animation.to)),\n this\n );\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n if (isAnimating(this)) {\n this._resume();\n }\n flushCalls(state.resumeQueue);\n sendEvent(\n this,\n \"onResume\",\n getFinishedResult(this, checkFinished(this, this.animation.to)),\n this\n );\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then((result) => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n return result;\n });\n }\n /** Merge props into the current animation */\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n const hasToProp = !is5.und(range.to);\n const hasFromProp = !is5.und(range.from);\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n const { key, defaultProps, animation: anim } = this;\n const { to: prevTo, from: prevFrom } = anim;\n let { to: to2 = prevTo, from = prevFrom } = range;\n if (hasFromProp && !hasToProp && (!props.default || is5.und(to2))) {\n to2 = from;\n }\n if (props.reverse)\n [to2, from] = [from, to2];\n const hasFromChanged = !isEqual(from, prevFrom);\n if (hasFromChanged) {\n anim.from = from;\n }\n from = getFluidValue2(from);\n const hasToChanged = !isEqual(to2, prevTo);\n if (hasToChanged) {\n this._focus(to2);\n }\n const hasAsyncTo = isAsyncTo(props.to);\n const { config: config2 } = anim;\n const { decay, velocity } = config2;\n if (hasToProp || hasFromProp) {\n config2.velocity = 0;\n }\n if (props.config && !hasAsyncTo) {\n mergeConfig(\n config2,\n callProp(props.config, key),\n // Avoid calling the same \"config\" prop twice.\n props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0\n );\n }\n let node = getAnimated2(this);\n if (!node || is5.und(to2)) {\n return resolve(getFinishedResult(this, true));\n }\n const reset = (\n // When `reset` is undefined, the `from` prop implies `reset: true`,\n // except for declarative updates. When `reset` is defined, there\n // must exist a value to animate from.\n is5.und(props.reset) ? hasFromProp && !props.default : !is5.und(from) && matchProp(props.reset, key)\n );\n const value = reset ? from : this.get();\n const goal = computeGoal(to2);\n const isAnimatable = is5.num(goal) || is5.arr(goal) || isAnimatedString2(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n if (hasToChanged) {\n const nodeType = getAnimatedType(to2);\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else\n throw Error(\n `Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`\n );\n }\n }\n const goalType = node.constructor;\n let started = hasFluidValue(to2);\n let finished = false;\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config2.decay, decay) || !isEqual(config2.velocity, velocity)) {\n started = true;\n }\n }\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to2) ? null : goalType == AnimatedString ? [1] : toArray2(goal);\n }\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n if (started) {\n const { onRest } = anim;\n each2(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n this._pendingCalls.add(resolve);\n if (anim.changed)\n raf3.batchedUpdates(() => {\n anim.changed = !reset;\n onRest?.(result, this);\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart?.(result, this);\n }\n });\n }\n }\n if (reset) {\n this._set(value);\n }\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n /** Update the `animation.to` value, which might be a `FluidValue` */\n _focus(value) {\n const anim = this.animation;\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n anim.to = value;\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n _attach() {\n let priority = 0;\n const { to: to2 } = this.animation;\n if (hasFluidValue(to2)) {\n addFluidObserver(to2, this);\n if (isFrameValue(to2)) {\n priority = to2.priority + 1;\n }\n }\n this.priority = priority;\n }\n _detach() {\n const { to: to2 } = this.animation;\n if (hasFluidValue(to2)) {\n removeFluidObserver(to2, this);\n }\n }\n /**\n * Update the current value from outside the frameloop,\n * and return the `Animated` node.\n */\n _set(arg, idle = true) {\n const value = getFluidValue2(arg);\n if (!is5.und(value)) {\n const oldNode = getAnimated2(this);\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n if (oldNode) {\n raf3.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n return getAnimated2(this);\n }\n _onStart() {\n const anim = this.animation;\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(\n this,\n \"onStart\",\n getFinishedResult(this, checkFinished(this, anim.to)),\n this\n );\n }\n }\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n callProp(this.animation.onChange, value, this);\n }\n callProp(this.defaultProps.onChange, value, this);\n super._onChange(value, idle);\n }\n // This method resets the animation state (even if already animating) to\n // ensure the latest from/to range is used, and it also ensures this spring\n // is added to the frameloop.\n _start() {\n const anim = this.animation;\n getAnimated2(this).reset(getFluidValue2(anim.to));\n if (!anim.immediate) {\n anim.fromValues = anim.values.map((node) => node.lastPosition);\n }\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n _resume() {\n if (G5.skipAnimation) {\n this.finish();\n } else {\n frameLoop2.start(this);\n }\n }\n /**\n * Exit the frameloop and notify `onRest` listeners.\n *\n * Always wrap `_stop` calls with `batchedUpdates`.\n */\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each2(anim.values, (node) => {\n node.done = true;\n });\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = void 0;\n }\n callFluidObservers2(this, {\n type: \"idle\",\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal ?? anim.to));\n flushCalls(this._pendingCalls, result);\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, \"onRest\", result, this);\n }\n }\n }\n};\nfunction checkFinished(target, to2) {\n const goal = computeGoal(to2);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\nfunction createLoopUpdate(props, loop = props.loop, to2 = props.to) {\n const loopRet = callProp(loop);\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate({\n ...props,\n loop,\n // Avoid updating default props when looping.\n default: false,\n // Never loop the `pause` prop.\n pause: void 0,\n // For the \"reverse\" prop to loop as expected, the \"to\" prop\n // must be undefined. The \"reverse\" prop is ignored when the\n // \"to\" prop is an array or function.\n to: !reverse || isAsyncTo(to2) ? to2 : void 0,\n // Ignore the \"from\" prop except on reset.\n from: reset ? props.from : void 0,\n reset,\n // The \"loop\" prop can return a \"useSpring\" props object to\n // override any of the original props.\n ...overrides\n });\n }\n}\nfunction createUpdate(props) {\n const { to: to2, from } = props = inferTo(props);\n const keys = /* @__PURE__ */ new Set();\n if (is5.obj(to2))\n findDefined(to2, keys);\n if (is5.obj(from))\n findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update2 = createUpdate(props);\n if (is5.und(update2.default)) {\n update2.default = getDefaultProps(update2);\n }\n return update2;\n}\nfunction findDefined(values, keys) {\n eachProp3(values, (value, key) => value != null && keys.add(key));\n}\nvar ACTIVE_EVENTS = [\n \"onStart\",\n \"onRest\",\n \"onChange\",\n \"onPause\",\n \"onResume\"\n];\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : void 0;\n}\nfunction sendEvent(target, type, ...args) {\n target.animation[type]?.(...args);\n target.defaultProps[type]?.(...args);\n}\n\n// src/Controller.ts\nimport {\n is as is6,\n raf as raf4,\n each as each3,\n noop,\n flush as flush2,\n toArray as toArray3,\n eachProp as eachProp4,\n flushCalls as flushCalls2,\n addFluidObserver as addFluidObserver2\n} from \"@react-spring/shared\";\nvar BATCHED_EVENTS = [\"onStart\", \"onChange\", \"onRest\"];\nvar nextId2 = 1;\nvar Controller = class {\n constructor(props, flush3) {\n this.id = nextId2++;\n /** The animated values */\n this.springs = {};\n /** The queue of props passed to the `update` method. */\n this.queue = [];\n /** The counter for tracking `scheduleProps` calls */\n this._lastAsyncId = 0;\n /** The values currently being animated */\n this._active = /* @__PURE__ */ new Set();\n /** The values that changed recently */\n this._changed = /* @__PURE__ */ new Set();\n /** Equals false when `onStart` listeners can be called */\n this._started = false;\n /** State used by the `runAsync` function */\n this._state = {\n paused: false,\n pauseQueue: /* @__PURE__ */ new Set(),\n resumeQueue: /* @__PURE__ */ new Set(),\n timeouts: /* @__PURE__ */ new Set()\n };\n /** The event queues that are flushed once per frame maximum */\n this._events = {\n onStart: /* @__PURE__ */ new Map(),\n onChange: /* @__PURE__ */ new Map(),\n onRest: /* @__PURE__ */ new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n if (flush3) {\n this._flush = flush3;\n }\n if (props) {\n this.start({ default: true, ...props });\n }\n }\n /**\n * Equals `true` when no spring values are in the frameloop, and\n * no async animation is currently active.\n */\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every((spring) => {\n return spring.idle && !spring.isDelayed && !spring.isPaused;\n });\n }\n get item() {\n return this._item;\n }\n set item(item) {\n this._item = item;\n }\n /** Get the current values of our springs */\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n /** Set the current values without animating. */\n set(values) {\n for (const key in values) {\n const value = values[key];\n if (!is6.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n /** Push an update onto the queue of each value. */\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n return this;\n }\n /**\n * Start the queued animations for every spring, and resolve the returned\n * promise once all queued animations have finished or been cancelled.\n *\n * When you pass a queue (instead of nothing), that queue is used instead of\n * the queued animations added with the `update` method, which are left alone.\n */\n start(props) {\n let { queue } = this;\n if (props) {\n queue = toArray3(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n if (this._flush) {\n return this._flush(this, queue);\n }\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n /** @internal */\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n if (keys) {\n const springs = this.springs;\n each3(toArray3(keys), (key) => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each((spring) => spring.stop(!!arg));\n }\n return this;\n }\n /** Freeze the active animation in time */\n pause(keys) {\n if (is6.und(keys)) {\n this.start({ pause: true });\n } else {\n const springs = this.springs;\n each3(toArray3(keys), (key) => springs[key].pause());\n }\n return this;\n }\n /** Resume the animation if paused. */\n resume(keys) {\n if (is6.und(keys)) {\n this.start({ pause: false });\n } else {\n const springs = this.springs;\n each3(toArray3(keys), (key) => springs[key].resume());\n }\n return this;\n }\n /** Call a function once per spring value */\n each(iterator) {\n eachProp4(this.springs, iterator);\n }\n /** @internal Called at the end of every animation frame */\n _onFrame() {\n const { onStart, onChange, onRest } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush2(onStart, ([onStart2, result]) => {\n result.value = this.get();\n onStart2(result, this, this._item);\n });\n }\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n if (changed && onChange.size) {\n flush2(onChange, ([onChange2, result]) => {\n result.value = values;\n onChange2(result, this, this._item);\n });\n }\n if (idle) {\n this._started = false;\n flush2(onRest, ([onRest2, result]) => {\n result.value = values;\n onRest2(result, this, this._item);\n });\n }\n }\n /** @internal */\n eventObserved(event) {\n if (event.type == \"change\") {\n this._changed.add(event.parent);\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == \"idle\") {\n this._active.delete(event.parent);\n } else\n return;\n raf4.onFrame(this._onFrame);\n }\n};\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map((props) => flushUpdate(ctrl, props))).then(\n (results) => getCombinedResult(ctrl, results)\n );\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const { keys, to: to2, from, loop, onRest, onResolve } = props;\n const defaults2 = is6.obj(props.default) && props.default;\n if (loop) {\n props.loop = false;\n }\n if (to2 === false)\n props.to = null;\n if (from === false)\n props.from = null;\n const asyncTo = is6.arr(to2) || is6.fun(to2) ? to2 : void 0;\n if (asyncTo) {\n props.to = void 0;\n props.onRest = void 0;\n if (defaults2) {\n defaults2.onRest = void 0;\n }\n } else {\n each3(BATCHED_EVENTS, (key) => {\n const handler = props[key];\n if (is6.fun(handler)) {\n const queue = ctrl[\"_events\"][key];\n props[key] = ({ finished, cancelled }) => {\n const result2 = queue.get(handler);\n if (result2) {\n if (!finished)\n result2.finished = false;\n if (cancelled)\n result2.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n if (defaults2) {\n defaults2[key] = props[key];\n }\n }\n });\n }\n const state = ctrl[\"_state\"];\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls2(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n const promises = (keys || Object.keys(ctrl.springs)).map(\n (key) => ctrl.springs[key].start(props)\n );\n const cancel = props.cancel === true || getDefaultProp(props, \"cancel\") === true;\n if (asyncTo || cancel && state.asyncId) {\n promises.push(\n scheduleProps(++ctrl[\"_lastAsyncId\"], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n start(props2, resolve) {\n if (cancel) {\n stopAsync(state, ctrl[\"_lastAsyncId\"]);\n resolve(getCancelledResult(ctrl));\n } else {\n props2.onRest = onRest;\n resolve(\n runAsync(\n asyncTo,\n props2,\n state,\n ctrl\n )\n );\n }\n }\n }\n })\n );\n }\n if (state.paused) {\n await new Promise((resume) => {\n state.resumeQueue.add(resume);\n });\n }\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to2);\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n if (onResolve) {\n raf4.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = { ...ctrl.springs };\n if (props) {\n each3(toArray3(props), (props2) => {\n if (is6.und(props2.keys)) {\n props2 = createUpdate(props2);\n }\n if (!is6.obj(props2.to)) {\n props2 = { ...props2, to: void 0 };\n }\n prepareSprings(springs, props2, (key) => {\n return createSpring(key);\n });\n });\n }\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp4(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver2(spring, ctrl);\n }\n });\n}\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n if (observer) {\n addFluidObserver2(spring, observer);\n }\n return spring;\n}\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each3(props.keys, (key) => {\n const spring = springs[key] || (springs[key] = create(key));\n spring[\"_prepareNode\"](props);\n });\n }\n}\nfunction prepareKeys(ctrl, queue) {\n each3(queue, (props) => {\n prepareSprings(ctrl.springs, props, (key) => {\n return createSpring(key, ctrl);\n });\n });\n}\n\n// src/SpringContext.tsx\nimport * as React from \"react\";\nimport { useContext } from \"react\";\nimport { useMemoOne } from \"@react-spring/shared\";\nvar SpringContext = ({\n children,\n ...props\n}) => {\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause, immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({ pause, immediate }), [pause, immediate]);\n const { Provider } = ctx;\n return /* @__PURE__ */ React.createElement(Provider, { value: props }, children);\n};\nvar ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\n// src/SpringRef.ts\nimport { each as each4, is as is7, deprecateDirectCall } from \"@react-spring/shared\";\nvar SpringRef = () => {\n const current = [];\n const SpringRef2 = function(props) {\n deprecateDirectCall();\n const results = [];\n each4(current, (ctrl, i) => {\n if (is7.und(props)) {\n results.push(ctrl.start());\n } else {\n const update2 = _getProps(props, ctrl, i);\n if (update2) {\n results.push(ctrl.start(update2));\n }\n }\n });\n return results;\n };\n SpringRef2.current = current;\n SpringRef2.add = function(ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n SpringRef2.delete = function(ctrl) {\n const i = current.indexOf(ctrl);\n if (~i)\n current.splice(i, 1);\n };\n SpringRef2.pause = function() {\n each4(current, (ctrl) => ctrl.pause(...arguments));\n return this;\n };\n SpringRef2.resume = function() {\n each4(current, (ctrl) => ctrl.resume(...arguments));\n return this;\n };\n SpringRef2.set = function(values) {\n each4(current, (ctrl, i) => {\n const update2 = is7.fun(values) ? values(i, ctrl) : values;\n if (update2) {\n ctrl.set(update2);\n }\n });\n };\n SpringRef2.start = function(props) {\n const results = [];\n each4(current, (ctrl, i) => {\n if (is7.und(props)) {\n results.push(ctrl.start());\n } else {\n const update2 = this._getProps(props, ctrl, i);\n if (update2) {\n results.push(ctrl.start(update2));\n }\n }\n });\n return results;\n };\n SpringRef2.stop = function() {\n each4(current, (ctrl) => ctrl.stop(...arguments));\n return this;\n };\n SpringRef2.update = function(props) {\n each4(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n const _getProps = function(arg, ctrl, index) {\n return is7.fun(arg) ? arg(index, ctrl) : arg;\n };\n SpringRef2._getProps = _getProps;\n return SpringRef2;\n};\n\n// src/hooks/useSprings.ts\nfunction useSprings(length, props, deps) {\n const propsFn = is8.fun(props) && props;\n if (propsFn && !deps)\n deps = [];\n const ref = useMemo(\n () => propsFn || arguments.length == 3 ? SpringRef() : void 0,\n []\n );\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(\n () => ({\n ctrls: [],\n queue: [],\n flush(ctrl, updates2) {\n const springs2 = getSprings(ctrl, updates2);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs2).some((key) => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates2) : new Promise((resolve) => {\n setSprings(ctrl, springs2);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates2));\n });\n forceUpdate();\n });\n }\n }),\n []\n );\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each5(ctrls.current.slice(length, prevLength), (ctrl) => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update2 = propsFn ? propsFn(i, ctrl) : props[i];\n if (update2) {\n updates[i] = declareUpdate(update2);\n }\n }\n }\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext2(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useIsomorphicLayoutEffect2(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const { queue } = state;\n if (queue.length) {\n state.queue = [];\n each5(queue, (cb) => cb());\n }\n each5(ctrls.current, (ctrl, i) => {\n ref?.add(ctrl);\n if (hasContext) {\n ctrl.start({ default: context });\n }\n const update2 = updates[i];\n if (update2) {\n replaceRef(ctrl, update2.ref);\n if (ctrl.ref) {\n ctrl.queue.push(update2);\n } else {\n ctrl.start(update2);\n }\n }\n });\n });\n useOnce(() => () => {\n each5(state.ctrls, (ctrl) => ctrl.stop(true));\n });\n const values = springs.map((x) => ({ ...x }));\n return ref ? [values, ref] : values;\n}\n\n// src/hooks/useSpring.ts\nfunction useSpring(props, deps) {\n const isFn = is9.fun(props);\n const [[values], ref] = useSprings(\n 1,\n isFn ? props : [props],\n isFn ? deps || [] : deps\n );\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\n// src/hooks/useSpringRef.ts\nimport { useState } from \"react\";\nvar initSpringRef = () => SpringRef();\nvar useSpringRef = () => useState(initSpringRef)[0];\n\n// src/hooks/useSpringValue.ts\nimport { useConstant, useOnce as useOnce2 } from \"@react-spring/shared\";\nvar useSpringValue = (initial, props) => {\n const springValue = useConstant(() => new SpringValue(initial, props));\n useOnce2(() => () => {\n springValue.stop();\n });\n return springValue;\n};\n\n// src/hooks/useTrail.ts\nimport { each as each6, is as is10, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect3 } from \"@react-spring/shared\";\nfunction useTrail(length, propsArg, deps) {\n const propsFn = is10.fun(propsArg) && propsArg;\n if (propsFn && !deps)\n deps = [];\n let reverse = true;\n let passedRef = void 0;\n const result = useSprings(\n length,\n (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n passedRef = props.ref;\n reverse = reverse && props.reverse;\n return props;\n },\n // Ensure the props function is called when no deps exist.\n // This works around the 3 argument rule.\n deps || [{}]\n );\n useIsomorphicLayoutEffect3(() => {\n each6(result[1].current, (ctrl, i) => {\n const parent = result[1].current[i + (reverse ? 1 : -1)];\n replaceRef(ctrl, passedRef);\n if (ctrl.ref) {\n if (parent) {\n ctrl.update({ to: parent.springs });\n }\n return;\n }\n if (parent) {\n ctrl.start({ to: parent.springs });\n } else {\n ctrl.start();\n }\n });\n }, deps);\n if (propsFn || arguments.length == 3) {\n const ref = passedRef ?? result[1];\n ref[\"_getProps\"] = (propsArg2, ctrl, i) => {\n const props = is10.fun(propsArg2) ? propsArg2(i, ctrl) : propsArg2;\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent)\n props.to = parent.springs;\n return props;\n }\n };\n return result;\n }\n return result[0];\n}\n\n// src/hooks/useTransition.tsx\nimport * as React2 from \"react\";\nimport { useContext as useContext3, useRef as useRef2, useMemo as useMemo2 } from \"react\";\nimport {\n is as is11,\n toArray as toArray4,\n useForceUpdate as useForceUpdate2,\n useOnce as useOnce3,\n usePrev as usePrev2,\n each as each7,\n useIsomorphicLayoutEffect as useIsomorphicLayoutEffect4\n} from \"@react-spring/shared\";\nfunction useTransition(data, props, deps) {\n const propsFn = is11.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n exitBeforeEnter = false,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo2(\n () => propsFn || arguments.length == 3 ? SpringRef() : void 0,\n []\n );\n const items = toArray4(data);\n const transitions = [];\n const usedTransitions = useRef2(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useIsomorphicLayoutEffect4(() => {\n usedTransitions.current = transitions;\n });\n useOnce3(() => {\n each7(transitions, (t) => {\n ref?.add(t.ctrl);\n t.ctrl.ref = ref;\n });\n return () => {\n each7(usedTransitions.current, (t) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n });\n };\n });\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useIsomorphicLayoutEffect4(\n () => each7(expired, ({ ctrl, item, key }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n })\n );\n const reused = [];\n if (prevTransitions)\n each7(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i)\n transitions[i] = t;\n }\n });\n each7(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: \"mount\" /* MOUNT */,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n if (reused.length) {\n let i = -1;\n const { leave } = propsFn ? propsFn() : props;\n each7(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = { ...t, item: items[keyIndex] };\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n if (is11.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n let delay = -trail;\n const forceUpdate = useForceUpdate2();\n const defaultProps = getDefaultProps(props);\n const changes = /* @__PURE__ */ new Map();\n const exitingTransitions = useRef2(/* @__PURE__ */ new Map());\n const forceChange = useRef2(false);\n each7(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to2;\n let phase;\n const propsDelay = callProp(p.delay || 0, key);\n if (prevPhase == \"mount\" /* MOUNT */) {\n to2 = p.enter;\n phase = \"enter\" /* ENTER */;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n if (prevPhase != \"leave\" /* LEAVE */) {\n if (isLeave) {\n to2 = p.leave;\n phase = \"leave\" /* LEAVE */;\n } else if (to2 = p.update) {\n phase = \"update\" /* UPDATE */;\n } else\n return;\n } else if (!isLeave) {\n to2 = p.enter;\n phase = \"enter\" /* ENTER */;\n } else\n return;\n }\n to2 = callProp(to2, t.item, i);\n to2 = is11.obj(to2) ? inferTo(to2) : { to: to2 };\n if (!to2.config) {\n const config2 = propsConfig || defaultProps.config;\n to2.config = callProp(config2, t.item, i, phase);\n }\n delay += trail;\n const payload = {\n ...defaultProps,\n // we need to add our props.delay value you here.\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n // This prevents implied resets.\n reset: false,\n // Merge any phase-specific props.\n ...to2\n };\n if (phase == \"enter\" /* ENTER */ && is11.und(payload.from)) {\n const p2 = propsFn ? propsFn() : props;\n const from = is11.und(p2.initial) || prevTransitions ? p2.from : p2.initial;\n payload.from = callProp(from, t.item, i);\n }\n const { onResolve } = payload;\n payload.onResolve = (result) => {\n callProp(onResolve, result);\n const transitions2 = usedTransitions.current;\n const t2 = transitions2.find((t3) => t3.key === key);\n if (!t2)\n return;\n if (result.cancelled && t2.phase != \"update\" /* UPDATE */) {\n return;\n }\n if (t2.ctrl.idle) {\n const idle = transitions2.every((t3) => t3.ctrl.idle);\n if (t2.phase == \"leave\" /* LEAVE */) {\n const expiry = callProp(expires, t2.item);\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t2.expired = true;\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 2147483647)\n t2.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n if (idle && transitions2.some((t3) => t3.expired)) {\n exitingTransitions.current.delete(t2);\n if (exitBeforeEnter) {\n forceChange.current = true;\n }\n forceUpdate();\n }\n }\n };\n const springs = getSprings(t.ctrl, payload);\n if (phase === \"leave\" /* LEAVE */ && exitBeforeEnter) {\n exitingTransitions.current.set(t, { phase, springs, payload });\n } else {\n changes.set(t, { phase, springs, payload });\n }\n });\n const context = useContext3(SpringContext);\n const prevContext = usePrev2(context);\n const hasContext = context !== prevContext && hasProps(context);\n useIsomorphicLayoutEffect4(() => {\n if (hasContext) {\n each7(transitions, (t) => {\n t.ctrl.start({ default: context });\n });\n }\n }, [context]);\n each7(changes, (_, t) => {\n if (exitingTransitions.current.size) {\n const ind = transitions.findIndex((state) => state.key === t.key);\n transitions.splice(ind, 1);\n }\n });\n useIsomorphicLayoutEffect4(\n () => {\n each7(\n exitingTransitions.current.size ? exitingTransitions.current : changes,\n ({ phase, payload }, t) => {\n const { ctrl } = t;\n t.phase = phase;\n ref?.add(ctrl);\n if (hasContext && phase == \"enter\" /* ENTER */) {\n ctrl.start({ default: context });\n }\n if (payload) {\n replaceRef(ctrl, payload.ref);\n if ((ctrl.ref || ref) && !forceChange.current) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n if (forceChange.current) {\n forceChange.current = false;\n }\n }\n }\n }\n );\n },\n reset ? void 0 : deps\n );\n const renderTransitions = (render) => /* @__PURE__ */ React2.createElement(React2.Fragment, null, transitions.map((t, i) => {\n const { springs } = changes.get(t) || t.ctrl;\n const elem = render({ ...springs }, t.item, t, i);\n return elem && elem.type ? /* @__PURE__ */ React2.createElement(\n elem.type,\n {\n ...elem.props,\n key: is11.str(t.key) || is11.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n }\n ) : elem;\n }));\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nvar nextKey = 1;\nfunction getKeys(items, { key, keys = key }, prevTransitions) {\n if (keys === null) {\n const reused = /* @__PURE__ */ new Set();\n return items.map((item) => {\n const t = prevTransitions && prevTransitions.find(\n (t2) => t2.item === item && t2.phase !== \"leave\" /* LEAVE */ && !reused.has(t2)\n );\n if (t) {\n reused.add(t);\n return t.key;\n }\n return nextKey++;\n });\n }\n return is11.und(keys) ? items : is11.fun(keys) ? items.map(keys) : toArray4(keys);\n}\n\n// src/hooks/useScroll.ts\nimport { each as each8, onScroll, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect5 } from \"@react-spring/shared\";\nvar useScroll = ({\n container,\n ...springOptions\n} = {}) => {\n const [scrollValues, api] = useSpring(\n () => ({\n scrollX: 0,\n scrollY: 0,\n scrollXProgress: 0,\n scrollYProgress: 0,\n ...springOptions\n }),\n []\n );\n useIsomorphicLayoutEffect5(() => {\n const cleanupScroll = onScroll(\n ({ x, y }) => {\n api.start({\n scrollX: x.current,\n scrollXProgress: x.progress,\n scrollY: y.current,\n scrollYProgress: y.progress\n });\n },\n { container: container?.current || void 0 }\n );\n return () => {\n each8(Object.values(scrollValues), (value) => value.stop());\n cleanupScroll();\n };\n }, []);\n return scrollValues;\n};\n\n// src/hooks/useResize.ts\nimport { onResize, each as each9, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect6 } from \"@react-spring/shared\";\nvar useResize = ({\n container,\n ...springOptions\n}) => {\n const [sizeValues, api] = useSpring(\n () => ({\n width: 0,\n height: 0,\n ...springOptions\n }),\n []\n );\n useIsomorphicLayoutEffect6(() => {\n const cleanupScroll = onResize(\n ({ width, height }) => {\n api.start({\n width,\n height,\n immediate: sizeValues.width.get() === 0 || sizeValues.height.get() === 0\n });\n },\n { container: container?.current || void 0 }\n );\n return () => {\n each9(Object.values(sizeValues), (value) => value.stop());\n cleanupScroll();\n };\n }, []);\n return sizeValues;\n};\n\n// src/hooks/useInView.ts\nimport { useRef as useRef3, useState as useState2 } from \"react\";\nimport { is as is12, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect7 } from \"@react-spring/shared\";\nvar defaultThresholdOptions = {\n any: 0,\n all: 1\n};\nfunction useInView(props, args) {\n const [isInView, setIsInView] = useState2(false);\n const ref = useRef3();\n const propsFn = is12.fun(props) && props;\n const springsProps = propsFn ? propsFn() : {};\n const { to: to2 = {}, from = {}, ...restSpringProps } = springsProps;\n const intersectionArguments = propsFn ? args : props;\n const [springs, api] = useSpring(() => ({ from, ...restSpringProps }), []);\n useIsomorphicLayoutEffect7(() => {\n const element = ref.current;\n const {\n root,\n once,\n amount = \"any\",\n ...restArgs\n } = intersectionArguments ?? {};\n if (!element || once && isInView || typeof IntersectionObserver === \"undefined\")\n return;\n const activeIntersections = /* @__PURE__ */ new WeakMap();\n const onEnter = () => {\n if (to2) {\n api.start(to2);\n }\n setIsInView(true);\n const cleanup = () => {\n if (from) {\n api.start(from);\n }\n setIsInView(false);\n };\n return once ? void 0 : cleanup;\n };\n const handleIntersection = (entries) => {\n entries.forEach((entry) => {\n const onLeave = activeIntersections.get(entry.target);\n if (entry.isIntersecting === Boolean(onLeave)) {\n return;\n }\n if (entry.isIntersecting) {\n const newOnLeave = onEnter();\n if (is12.fun(newOnLeave)) {\n activeIntersections.set(entry.target, newOnLeave);\n } else {\n observer.unobserve(entry.target);\n }\n } else if (onLeave) {\n onLeave();\n activeIntersections.delete(entry.target);\n }\n });\n };\n const observer = new IntersectionObserver(handleIntersection, {\n root: root && root.current || void 0,\n threshold: typeof amount === \"number\" || Array.isArray(amount) ? amount : defaultThresholdOptions[amount],\n ...restArgs\n });\n observer.observe(element);\n return () => observer.unobserve(element);\n }, [intersectionArguments]);\n if (propsFn) {\n return [ref, springs];\n }\n return [ref, isInView];\n}\n\n// src/components/Spring.tsx\nfunction Spring({ children, ...props }) {\n return children(useSpring(props));\n}\n\n// src/components/Trail.tsx\nimport { is as is13 } from \"@react-spring/shared\";\nfunction Trail({\n items,\n children,\n ...props\n}) {\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is13.fun(result) ? result(trails[index]) : result;\n });\n}\n\n// src/components/Transition.tsx\nfunction Transition({\n items,\n children,\n ...props\n}) {\n return useTransition(items, props)(children);\n}\n\n// src/interpolate.ts\nimport { deprecateInterpolate as deprecateInterpolate2 } from \"@react-spring/shared\";\n\n// src/Interpolation.ts\nimport {\n is as is14,\n raf as raf5,\n each as each10,\n isEqual as isEqual2,\n toArray as toArray5,\n frameLoop as frameLoop3,\n getFluidValue as getFluidValue3,\n createInterpolator,\n Globals as G6,\n callFluidObservers as callFluidObservers3,\n addFluidObserver as addFluidObserver3,\n removeFluidObserver as removeFluidObserver2,\n hasFluidValue as hasFluidValue2\n} from \"@react-spring/shared\";\nimport {\n getAnimated as getAnimated3,\n setAnimated as setAnimated2,\n getAnimatedType as getAnimatedType2,\n getPayload as getPayload2\n} from \"@react-spring/animated\";\nvar Interpolation = class extends FrameValue {\n constructor(source, args) {\n super();\n this.source = source;\n /** Equals false when in the frameloop */\n this.idle = true;\n /** The inputs which are currently animating */\n this._active = /* @__PURE__ */ new Set();\n this.calc = createInterpolator(...args);\n const value = this._get();\n const nodeType = getAnimatedType2(value);\n setAnimated2(this, nodeType.create(value));\n }\n advance(_dt) {\n const value = this._get();\n const oldValue = this.get();\n if (!isEqual2(value, oldValue)) {\n getAnimated3(this).setValue(value);\n this._onChange(value, this.idle);\n }\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n _get() {\n const inputs = is14.arr(this.source) ? this.source.map(getFluidValue3) : toArray5(getFluidValue3(this.source));\n return this.calc(...inputs);\n }\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each10(getPayload2(this), (node) => {\n node.done = false;\n });\n if (G6.skipAnimation) {\n raf5.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop3.start(this);\n }\n }\n }\n // Observe our sources only when we're observed.\n _attach() {\n let priority = 1;\n each10(toArray5(this.source), (source) => {\n if (hasFluidValue2(source)) {\n addFluidObserver3(source, this);\n }\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n this._start();\n }\n // Stop observing our sources once we have no observers.\n _detach() {\n each10(toArray5(this.source), (source) => {\n if (hasFluidValue2(source)) {\n removeFluidObserver2(source, this);\n }\n });\n this._active.clear();\n becomeIdle(this);\n }\n /** @internal */\n eventObserved(event) {\n if (event.type == \"change\") {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n this._start();\n }\n } else if (event.type == \"idle\") {\n this._active.delete(event.parent);\n } else if (event.type == \"priority\") {\n this.priority = toArray5(this.source).reduce(\n (highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1),\n 0\n );\n }\n }\n};\nfunction isIdle(source) {\n return source.idle !== false;\n}\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each10(getPayload2(self), (node) => {\n node.done = true;\n });\n callFluidObservers3(self, {\n type: \"idle\",\n parent: self\n });\n }\n}\n\n// src/interpolate.ts\nvar to = (source, ...args) => new Interpolation(source, args);\nvar interpolate = (source, ...args) => (deprecateInterpolate2(), new Interpolation(source, args));\n\n// src/globals.ts\nimport {\n Globals,\n frameLoop as frameLoop4,\n createStringInterpolator\n} from \"@react-spring/shared\";\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nvar update = frameLoop4.advance;\n\n// src/index.ts\nimport {\n createInterpolator as createInterpolator2,\n useIsomorphicLayoutEffect as useIsomorphicLayoutEffect8,\n useReducedMotion,\n easings as easings2\n} from \"@react-spring/shared\";\nexport * from \"@react-spring/types\";\nexport {\n BailSignal,\n Controller,\n FrameValue,\n Globals,\n Interpolation,\n Spring,\n SpringContext,\n SpringRef,\n SpringValue,\n Trail,\n Transition,\n config,\n createInterpolator2 as createInterpolator,\n easings2 as easings,\n inferTo,\n interpolate,\n to,\n update,\n useChain,\n useInView,\n useIsomorphicLayoutEffect8 as useIsomorphicLayoutEffect,\n useReducedMotion,\n useResize,\n useScroll,\n useSpring,\n useSpringRef,\n useSpringValue,\n useSprings,\n useTrail,\n useTransition\n};\n//# sourceMappingURL=react-spring_core.modern.mjs.map","// src/index.ts\nimport { Globals } from \"@react-spring/core\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport { createStringInterpolator, colors } from \"@react-spring/shared\";\nimport { createHost } from \"@react-spring/animated\";\n\n// src/applyAnimatedValues.ts\nvar isCustomPropRE = /^--/;\nfunction dangerousStyleValue(name, value) {\n if (value == null || typeof value === \"boolean\" || value === \"\")\n return \"\";\n if (typeof value === \"number\" && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]))\n return value + \"px\";\n return (\"\" + value).trim();\n}\nvar attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n if (!instance.nodeType || !instance.setAttribute) {\n return false;\n }\n const isFilterElement = instance.nodeName === \"filter\" || instance.parentNode && instance.parentNode.nodeName === \"filter\";\n const {\n className,\n style,\n children,\n scrollTop,\n scrollLeft,\n viewBox,\n ...attributes\n } = props;\n const values = Object.values(attributes);\n const names = Object.keys(attributes).map(\n (name) => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(\n /([A-Z])/g,\n // Attributes are written in dash case\n (n) => \"-\" + n.toLowerCase()\n ))\n );\n if (children !== void 0) {\n instance.textContent = children;\n }\n for (const name in style) {\n if (style.hasOwnProperty(name)) {\n const value = dangerousStyleValue(name, style[name]);\n if (isCustomPropRE.test(name)) {\n instance.style.setProperty(name, value);\n } else {\n instance.style[name] = value;\n }\n }\n }\n names.forEach((name, i) => {\n instance.setAttribute(name, values[i]);\n });\n if (className !== void 0) {\n instance.className = className;\n }\n if (scrollTop !== void 0) {\n instance.scrollTop = scrollTop;\n }\n if (scrollLeft !== void 0) {\n instance.scrollLeft = scrollLeft;\n }\n if (viewBox !== void 0) {\n instance.setAttribute(\"viewBox\", viewBox);\n }\n}\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\nvar prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\nvar prefixes = [\"Webkit\", \"Ms\", \"Moz\", \"O\"];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach((prefix) => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\n// src/AnimatedStyle.ts\nimport { AnimatedObject } from \"@react-spring/animated\";\nimport {\n is,\n each,\n toArray,\n eachProp,\n FluidValue,\n getFluidValue,\n callFluidObservers,\n hasFluidValue,\n addFluidObserver,\n removeFluidObserver\n} from \"@react-spring/shared\";\nvar domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nvar pxTransforms = /^(translate)/;\nvar degTransforms = /^(rotate|skew)/;\nvar addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\nvar isValueIdentity = (value, id) => is.arr(value) ? value.every((v) => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\nvar AnimatedStyle = class extends AnimatedObject {\n constructor({ x, y, z, ...style }) {\n const inputs = [];\n const transforms = [];\n if (x || y || z) {\n inputs.push([x || 0, y || 0, z || 0]);\n transforms.push((xyz) => [\n `translate3d(${xyz.map((v) => addUnit(v, \"px\")).join(\",\")})`,\n // prettier-ignore\n isValueIdentity(xyz, 0)\n ]);\n }\n eachProp(style, (value, key) => {\n if (key === \"transform\") {\n inputs.push([value || \"\"]);\n transforms.push((transform) => [transform, transform === \"\"]);\n } else if (domTransforms.test(key)) {\n delete style[key];\n if (is.und(value))\n return;\n const unit = pxTransforms.test(key) ? \"px\" : degTransforms.test(key) ? \"deg\" : \"\";\n inputs.push(toArray(value));\n transforms.push(\n key === \"rotate3d\" ? ([x2, y2, z2, deg]) => [\n `rotate3d(${x2},${y2},${z2},${addUnit(deg, unit)})`,\n isValueIdentity(deg, 0)\n ] : (input) => [\n `${key}(${input.map((v) => addUnit(v, unit)).join(\",\")})`,\n isValueIdentity(input, key.startsWith(\"scale\") ? 1 : 0)\n ]\n );\n }\n });\n if (inputs.length) {\n style.transform = new FluidTransform(inputs, transforms);\n }\n super(style);\n }\n};\nvar FluidTransform = class extends FluidValue {\n constructor(inputs, transforms) {\n super();\n this.inputs = inputs;\n this.transforms = transforms;\n this._value = null;\n }\n get() {\n return this._value || (this._value = this._get());\n }\n _get() {\n let transform = \"\";\n let identity = true;\n each(this.inputs, (input, i) => {\n const arg1 = getFluidValue(input[0]);\n const [t, id] = this.transforms[i](\n is.arr(arg1) ? arg1 : input.map(getFluidValue)\n );\n transform += \" \" + t;\n identity = identity && id;\n });\n return identity ? \"none\" : transform;\n }\n // Start observing our inputs once we have an observer.\n observerAdded(count) {\n if (count == 1)\n each(\n this.inputs,\n (input) => each(\n input,\n (value) => hasFluidValue(value) && addFluidObserver(value, this)\n )\n );\n }\n // Stop observing our inputs once we have no observers.\n observerRemoved(count) {\n if (count == 0)\n each(\n this.inputs,\n (input) => each(\n input,\n (value) => hasFluidValue(value) && removeFluidObserver(value, this)\n )\n );\n }\n eventObserved(event) {\n if (event.type == \"change\") {\n this._value = null;\n }\n callFluidObservers(this, event);\n }\n};\n\n// src/primitives.ts\nvar primitives = [\n \"a\",\n \"abbr\",\n \"address\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"bdi\",\n \"bdo\",\n \"big\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"small\",\n \"source\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n // SVG\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"ellipse\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"mask\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"text\",\n \"tspan\"\n];\n\n// src/index.ts\nexport * from \"@react-spring/core\";\nGlobals.assign({\n batchedUpdates: unstable_batchedUpdates,\n createStringInterpolator,\n colors\n});\nvar host = createHost(primitives, {\n applyAnimatedValues,\n createAnimatedStyle: (style) => new AnimatedStyle(style),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getComponentProps: ({ scrollTop, scrollLeft, ...props }) => props\n});\nvar animated = host.animated;\nexport {\n animated as a,\n animated\n};\n//# sourceMappingURL=react-spring_web.modern.mjs.map","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { a as __makeTemplateObject, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport styled, { css } from 'styled-components';\nimport ReactDOM from 'react-dom';\nimport { forwardRef, useRef, useImperativeHandle, useEffect, useCallback } from 'react';\nimport { animated, useTransition } from '@react-spring/web';\nimport { createPopper } from '@popperjs/core';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar DialogCss = css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n color: \", \";\\n background-color: \", \";\\n border: 1px solid \", \";\\n box-sizing: border-box;\\n box-shadow: 0px 8px 48px -8px \", \";\\n border-radius: 8px;\\n\"], [\"\\n color: \", \";\\n background-color: \", \";\\n border: 1px solid \", \";\\n box-sizing: border-box;\\n box-shadow: 0px 8px 48px -8px \", \";\\n border-radius: 8px;\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.standard;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.borderFaded;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.shadow;\n});\nvar DialogOverlay = styled(animated.div)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: \", \";\\n\"], [\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: \", \";\\n\"])), getZIndex('DIALOG'));\nvar StyledDialog = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n \", \";\\n width: \", \";\\n\"], [\"\\n \", \";\\n width: \", \";\\n\"])), DialogCss, function (_a) {\n var size = _a.size, isMobile = _a.isMobile;\n return size === 'small'\n ? isMobile\n ? '160px'\n : '200px'\n : size === 'large'\n ? '320px'\n : '409px';\n});\nvar getPopperjsOption = function (position) {\n if (position === 'topRight') {\n return {\n placement: 'bottom-end',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 4],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n mainAxis: false,\n },\n },\n { name: 'flip', enabled: false },\n ],\n };\n }\n if (position === 'bottomLeft') {\n return {\n placement: 'top-start',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 4],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n mainAxis: false,\n },\n },\n { name: 'flip', enabled: false },\n ],\n };\n }\n return {};\n};\nvar ANIMATION_DURATION = 150;\n// eslint-disable-next-line react/display-name\nvar Dialog = forwardRef(function (_a, forwardRef) {\n var anchor = _a.anchor, isDialogOpen = _a.isDialogOpen, onClose = _a.onClose, position = _a.position, size = _a.size, children = _a.children;\n var dialogRef = useRef(null);\n var isMobile = useContainerSize('MOBILE');\n useImperativeHandle(forwardRef, function () { return dialogRef.current; });\n useEffect(function () {\n var popperInstance;\n if (anchor && dialogRef.current && isDialogOpen) {\n popperInstance = createPopper(anchor, dialogRef.current, getPopperjsOption(position));\n }\n return function () {\n // need to delay the destroy for animation\n setTimeout(function () { return popperInstance === null || popperInstance === void 0 ? void 0 : popperInstance.destroy(); }, ANIMATION_DURATION);\n };\n }, [anchor, isDialogOpen, position]);\n var fadeTransition = useTransition(isDialogOpen, {\n from: { opacity: 0 },\n enter: { opacity: 1 },\n leave: { opacity: 0 },\n config: { duration: ANIMATION_DURATION },\n });\n var handleOverlayClick = useCallback(function (e) {\n var _a;\n if (!((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))) {\n onClose();\n }\n }, [onClose]);\n var handleKeyDown = useCallback(function (e) {\n if (e.key === 'Escape' && isDialogOpen) {\n // ESCキーでダイアログを閉じる\n onClose();\n }\n }, [isDialogOpen, onClose]);\n useEffect(function () {\n document.body.addEventListener('keydown', handleKeyDown, true);\n return function () {\n document.body.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [handleKeyDown]);\n var dialogRoot = document.getElementById('dialog-root');\n return dialogRoot\n ? ReactDOM.createPortal(fadeTransition(function (styles, item) {\n return item && (jsx(DialogOverlay, __assign({ onClick: handleOverlayClick, style: styles }, { children: jsx(StyledDialog, __assign({ tabIndex: 0, size: size, isMobile: isMobile, ref: dialogRef }, { children: children })) })));\n }), dialogRoot)\n : null;\n});\nvar templateObject_1, templateObject_2, templateObject_3;\n\nexport { DialogCss, Dialog as default };\n//# sourceMappingURL=index.es.js.map\n","var COLORS = {\n base: 'rgba(34, 34, 44, 1)',\n base_60: 'rgba(34, 34, 44, 0.6)',\n base_20: 'rgba(34, 34, 44, 0.2)',\n base_10: 'rgba(34, 34, 44, 0.1)',\n main: 'rgba(255, 255, 255, 1)',\n main_80: 'rgba(255, 255, 255, 0.8)',\n main_75: 'rgba(255, 255, 255, 0.75)',\n main_50: 'rgba(255, 255, 255, 0.5)',\n main_40: 'rgba(255, 255, 255, 0.4)',\n main_20: 'rgba(255, 255, 255, 0.2)',\n main_10: 'rgba(255, 255, 255, 0.1)',\n caution: 'rgba(251, 85, 35, 1)',\n key: 'rgba(255, 255, 255, 1)',\n};\n/**\n * All theme items should reference the colors object\n */\nvar getTheme = function (colors) { return ({\n text: {\n standard: colors.main,\n light: colors.main_80,\n faded: colors.main_40,\n },\n button: {\n primary: {\n backgroundActive: colors.main_20,\n focusOutline: colors.main_40,\n disabled: colors.main_40,\n },\n secondary: {\n background: colors.base_20,\n backgroundActive: colors.base_60,\n focusOutline: colors.main_40,\n },\n modality: {\n text: colors.base,\n background: colors.main,\n backgroundActive: colors.main_80,\n focusOutline: colors.base_20,\n },\n modalitySecondary: {\n text: colors.main,\n background: colors.base_10,\n backgroundActive: colors.main_20,\n border: colors.main,\n focusOutline: colors.base_20,\n },\n modalityGhost: {\n text: colors.main,\n background: 'transparent',\n backgroundActive: colors.main_20,\n border: colors.main,\n focusOutline: colors.base_20,\n },\n },\n progress: { key: colors.key, base: colors.main_40, step: colors.base_60 },\n volumeBar: { key: colors.main, base: colors.main_40 },\n loader: { background: colors.base_60 },\n overlay: colors.base_20,\n indicator: {\n background: colors.base_20,\n backgroundHover: colors.base_60,\n },\n centerHint: {\n background: colors.base_60,\n },\n dialog: {\n background: colors.base,\n border: colors.main_20,\n borderFaded: colors.main_10,\n shadow: colors.base_20,\n option: {\n text: {\n standard: colors.main_40,\n header: colors.main_80,\n locked: colors.main_20,\n notice: colors.main_50,\n selected: colors.main,\n check: colors.key,\n },\n backgroundHover: colors.main_20,\n },\n select: {\n text: { standard: colors.main, faded: colors.main_40 },\n border: colors.main_20,\n borderHovered: colors.main_40,\n background: colors.main_10,\n backgroundHovered: colors.main_20,\n },\n item: {\n backgroundHover: colors.main_10,\n overlay: colors.base_60,\n placeholder: colors.main_80,\n },\n },\n sceneSearch: {\n background: colors.base,\n border: colors.main_10,\n mobilePopup: colors.base_60,\n },\n shortcut: {\n table: {\n sequence: colors.key,\n },\n },\n liveNow: {\n inactive: colors.main_75,\n active: colors.caution,\n },\n}); };\n\nexport { COLORS, getTheme };\n//# sourceMappingURL=theme.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled from 'styled-components';\nimport { animated } from '@react-spring/web';\nimport { DialogCss } from '../Dialog/index.es.js';\nimport { COLORS } from '../../styles/theme.es.js';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport 'react/jsx-runtime';\nimport 'react-dom';\nimport 'react';\nimport '@popperjs/core';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar Wrapper = styled(animated.div)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: fixed;\\n top: 0;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: \", \";\\n\"], [\"\\n position: fixed;\\n top: 0;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: \", \";\\n\"])), getZIndex('DIALOG'));\nvar Mask = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0%;\\n right: 0%;\\n top: 0%;\\n bottom: 0%;\\n background: \", \";\\n\"], [\"\\n position: absolute;\\n left: 0%;\\n right: 0%;\\n top: 0%;\\n bottom: 0%;\\n background: \", \";\\n\"])), COLORS.base_60);\nvar StyledDialog = styled(animated.div)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n \", \";\\n position: absolute;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n border-bottom: 0;\\n z-index: \", \";\\n\"], [\"\\n \", \";\\n position: absolute;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n border-bottom: 0;\\n z-index: \", \";\\n\"])), DialogCss, getZIndex('DIALOG'));\nvar templateObject_1, templateObject_2, templateObject_3;\n\nexport { Mask, StyledDialog, Wrapper };\n//# sourceMappingURL=styles.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { useTransition } from '@react-spring/web';\nimport { Wrapper, Mask, StyledDialog } from './styles.es.js';\nimport 'styled-components';\nimport '../Dialog/index.es.js';\nimport 'react-dom';\nimport 'react';\nimport '@popperjs/core';\nimport '../../styles/stackOrder.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../styles/theme.es.js';\n\nvar MobileDialog = function (_a) {\n var isDialogOpen = _a.isDialogOpen, onClose = _a.onClose, children = _a.children;\n var transitions = useTransition(isDialogOpen, {\n from: { opacity: 0, bottom: '-100%' },\n enter: { opacity: 1, bottom: '0%' },\n leave: { opacity: 0, bottom: '-100%' },\n config: { duration: 200 },\n });\n return transitions(function (styles, item) {\n return item && (jsxs(Wrapper, { children: [jsx(Mask, { onClick: onClose }), jsx(StyledDialog, __assign({ style: styles }, { children: children }))] }));\n });\n};\n\nexport { MobileDialog };\n//# sourceMappingURL=index.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled, { css } from 'styled-components';\n\nvar commonButtonCss = css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n color: inherit;\\n background-color: \", \";\\n box-sizing: border-box;\\n transition: all 0.15s ease-in;\\n cursor: pointer;\\n -webkit-tap-highlight-color: transparent;\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n color: inherit;\\n background-color: \", \";\\n box-sizing: border-box;\\n transition: all 0.15s ease-in;\\n cursor: pointer;\\n -webkit-tap-highlight-color: transparent;\\n\\n \", \"\\n\"])), function (_a) {\n var isActive = _a.isActive, theme = _a.theme;\n return isActive ? theme.button.primary.backgroundActive : 'unset';\n}, function (_a) {\n var disabled = _a.disabled;\n return disabled\n ? css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n cursor: initial;\\n color: \", \";\\n \"], [\"\\n cursor: initial;\\n color: \", \";\\n \"])), function (_a) {\n var theme = _a.theme;\n return theme.button.primary.disabled;\n }) : css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid\\n \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n \"], [\"\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid\\n \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n \"])), function (_a) {\n var theme = _a.theme;\n return theme.button.primary.backgroundActive;\n }, function (_a) {\n var theme = _a.theme;\n return theme.button.primary.focusOutline;\n }, function (_a) {\n var theme = _a.theme;\n return theme.button.primary.backgroundActive;\n }, function (_a) {\n var theme = _a.theme;\n return theme.button.primary.backgroundActive;\n });\n});\nvar iconButtonCss = css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n border-radius: 50%;\\n\\n \", \"\\n\"], [\"\\n \", \";\\n border-radius: 50%;\\n\\n \", \"\\n\"])), commonButtonCss, function (_a) {\n var disabled = _a.disabled;\n return !disabled && css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n @media (hover: hover) {\\n &:hover {\\n transform: scale(1.1);\\n }\\n }\\n \"], [\"\\n @media (hover: hover) {\\n &:hover {\\n transform: scale(1.1);\\n }\\n }\\n \"])));\n});\nvar IconButton = styled.button(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n \", \";\\n \", \"\\n\"], [\"\\n \", \";\\n \", \"\\n\"])), iconButtonCss, function (_a) {\n var _b = _a.iconSize, iconSize = _b === void 0 ? 48 : _b;\n return css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n width: \", \"px;\\n height: \", \"px;\\n > svg {\\n height: \", \"px;\\n }\\n \"], [\"\\n width: \", \"px;\\n height: \", \"px;\\n > svg {\\n height: \", \"px;\\n }\\n \"])), iconSize, iconSize, iconSize);\n});\nvar PaddedIconButton = styled.button(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n \", \";\\n \", \"\\n\"], [\"\\n \", \";\\n \", \"\\n\"])), iconButtonCss, function (_a) {\n var iconSize = _a.iconSize;\n var padding = iconSize === 32 ? 4 : 6;\n return css(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n width: \", \"px;\\n height: \", \"px;\\n padding: \", \"px;\\n > svg {\\n height: \", \"px;\\n }\\n \"], [\"\\n width: \", \"px;\\n height: \", \"px;\\n padding: \", \"px;\\n > svg {\\n height: \", \"px;\\n }\\n \"])), iconSize + padding, iconSize + padding, padding, iconSize);\n});\nvar CloseButton = styled.button(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n \", \";\\n width: \", \";\\n height: \", \";\\n > svg {\\n height: 32px;\\n }\\n background-color: \", \";\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"], [\"\\n \", \";\\n width: \", \";\\n height: \", \";\\n > svg {\\n height: 32px;\\n }\\n background-color: \", \";\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"])), iconButtonCss, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '44px' : '48px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '44px' : '48px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.secondary.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.secondary.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.secondary.focusOutline;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.secondary.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.secondary.backgroundActive;\n});\nvar TextButton = styled.button(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n \", \";\\n gap: \", \";\\n padding: \", \";\\n border-radius: 4px;\\n font-size: \", \";\\n font-weight: 600;\\n\\n > svg {\\n height: \", \";\\n }\\n\"], [\"\\n \", \";\\n gap: \", \";\\n padding: \", \";\\n border-radius: 4px;\\n font-size: \", \";\\n font-weight: 600;\\n\\n > svg {\\n height: \", \";\\n }\\n\"])), commonButtonCss, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '2px' : '8px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return isMobile ? '1px 8px 1px 1px' : '4px 16px 4px 4px';\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '13px' : '16px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '32px' : '40px');\n});\nvar Standard = styled(TextButton)(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n position: relative;\\n width: 100%;\\n padding: 11px;\\n line-height: 1.4;\\n color: \", \";\\n border-color: \", \";\\n background-color: \", \";\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\\n > svg {\\n position: absolute;\\n left: 10px;\\n top: 50%;\\n transform: translateY(-50%);\\n height: 24px;\\n }\\n\\n > svg + span {\\n margin-left: 22px;\\n }\\n\"], [\"\\n position: relative;\\n width: 100%;\\n padding: 11px;\\n line-height: 1.4;\\n color: \", \";\\n border-color: \", \";\\n background-color: \", \";\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\\n > svg {\\n position: absolute;\\n left: 10px;\\n top: 50%;\\n transform: translateY(-50%);\\n height: 24px;\\n }\\n\\n > svg + span {\\n margin-left: 22px;\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.button.modality.text;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modality.border;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modality.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modality.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modality.focusOutline;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modality.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modality.backgroundActive;\n});\nvar Progress = styled(Standard)(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n width: \", \"px;\\n background-color: unset;\\n backdrop-filter: blur(8px);\\n background-image: linear-gradient(\\n 90deg,\\n white 50%,\\n rgba(238, 238, 238, 0.5) 50%\\n );\\n background-position: 100%;\\n background-size: 200%;\\n \", \";\\n\\n @keyframes color-change {\\n from {\\n background-position: 100%;\\n }\\n to {\\n background-position: 0%;\\n }\\n }\\n\"], [\"\\n width: \", \"px;\\n background-color: unset;\\n backdrop-filter: blur(8px);\\n background-image: linear-gradient(\\n 90deg,\\n white 50%,\\n rgba(238, 238, 238, 0.5) 50%\\n );\\n background-position: 100%;\\n background-size: 200%;\\n \", \";\\n\\n @keyframes color-change {\\n from {\\n background-position: 100%;\\n }\\n to {\\n background-position: 0%;\\n }\\n }\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? 160 : 240);\n}, function (_a) {\n var duration = _a.duration, animationEnabled = _a.animationEnabled;\n return animationEnabled\n ? \"animation: \".concat(duration, \"s linear 0s color-change forwards;\")\n : '';\n});\nvar Secondary = styled(Standard)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n color: \", \";\\n border: 1px solid \", \";\\n background-color: \", \";\\n backdrop-filter: blur(8px);\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid\\n \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"], [\"\\n color: \", \";\\n border: 1px solid \", \";\\n background-color: \", \";\\n backdrop-filter: blur(8px);\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid\\n \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.text;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.border;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.focusOutline;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalitySecondary.backgroundActive;\n});\nvar Ghost = styled(Standard)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n color: \", \";\\n border: 1px solid \", \";\\n background-color: \", \";\\n backdrop-filter: blur(8px);\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"], [\"\\n color: \", \";\\n border: 1px solid \", \";\\n background-color: \", \";\\n backdrop-filter: blur(8px);\\n\\n @media (hover: hover) {\\n &:hover {\\n background-color: \", \";\\n }\\n }\\n\\n &:focus-visible {\\n outline: 2px solid \", \";\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.text;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.border;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.focusOutline;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.backgroundActive;\n}, function (_a) {\n var theme = _a.theme;\n return theme.button.modalityGhost.backgroundActive;\n});\nvar ModalityButton = {\n Standard: Standard,\n Ghost: Ghost,\n Progress: Progress,\n Secondary: Secondary,\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15;\n\nexport { CloseButton, IconButton, ModalityButton, PaddedIconButton, TextButton };\n//# sourceMappingURL=Button.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgReplay(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 14.5V21l-11-8.5L32 4v5.5a23.5 23.5 0 11-18.002 8.395l3.83 3.213A18.5 18.5 0 1032 14.5z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgReplay as default };\n//# sourceMappingURL=replay.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgClose(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 36.216L46.784 51 51 46.784 36.216 32 51 17.216 46.784 13 32 27.784 17.216 13 13 17.216 27.784 32 13 46.784 17.216 51 32 36.216z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgClose as default };\n//# sourceMappingURL=close.es.js.map\n","import { a as __makeTemplateObject, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport styled, { css } from 'styled-components';\nimport { ModalityButton } from '../Button/Button.es.js';\nimport { FONT_FAMILY } from '../../styles/index.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport SvgReplay from '../../assets/icons/replay.es.js';\nimport SvgPlay from '../../assets/icons/play.es.js';\nimport SvgClose from '../../assets/icons/close.es.js';\nimport 'react';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar Container = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n padding: 8px;\\n background: \", \";\\n border: 1px solid \", \";\\n box-shadow: 0px 8px 48px -8px rgba(26, 26, 26, 0.2);\\n border-radius: 8px;\\n\"], [\"\\n padding: 8px;\\n background: \", \";\\n border: 1px solid \", \";\\n box-shadow: 0px 8px 48px -8px rgba(26, 26, 26, 0.2);\\n border-radius: 8px;\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.dialog.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.dialog.borderFaded;\n});\nvar ThumbnailStyle = css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n display: grid;\\n place-items: center;\\n background-image: url(\", \");\\n background-size: cover;\\n background-position: center;\\n border-radius: 4px;\\n\\n &::before {\\n position: absolute;\\n content: '';\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: \", \";\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n }\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n display: grid;\\n place-items: center;\\n background-image: url(\", \");\\n background-size: cover;\\n background-position: center;\\n border-radius: 4px;\\n\\n &::before {\\n position: absolute;\\n content: '';\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: \", \";\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n }\\n\\n \", \"\\n\"])), function (_a) {\n var src = _a.src;\n return src;\n}, function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n}, function (_a) {\n var onClick = _a.onClick;\n return onClick && css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n cursor: pointer;\\n &:hover {\\n &::before {\\n opacity: 1;\\n }\\n\\n > div {\\n transition: transform 0.15s ease-in;\\n transform: scale(1.1);\\n }\\n }\\n \"], [\"\\n cursor: pointer;\\n &:hover {\\n &::before {\\n opacity: 1;\\n }\\n\\n > div {\\n transition: transform 0.15s ease-in;\\n transform: scale(1.1);\\n }\\n }\\n \"])));\n});\nvar Thumbnail = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n width: 320px;\\n height: 180px;\\n\\n \", \"\\n\"], [\"\\n \", \";\\n width: 320px;\\n height: 180px;\\n\\n \", \"\\n\"])), ThumbnailStyle, function (_a) {\n var isMobile = _a.isMobile;\n return isMobile && css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n width: 240px;\\n height: 135px;\\n \"], [\"\\n width: 240px;\\n height: 135px;\\n \"])));\n});\nvar IconWrapper = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n display: grid;\\n place-items: center;\\n width: 48px;\\n height: 48px;\\n background: \", \";\\n backdrop-filter: blur(4px);\\n border-radius: 24px;\\n\\n > svg {\\n height: 32px;\\n }\\n\\n &:hover {\\n background: \", \";\\n }\\n\"], [\"\\n display: grid;\\n place-items: center;\\n width: 48px;\\n height: 48px;\\n background: \", \";\\n backdrop-filter: blur(4px);\\n border-radius: 24px;\\n\\n > svg {\\n height: 32px;\\n }\\n\\n &:hover {\\n background: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n}, function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n});\nvar TitleContainer = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n min-width: 0;\\n overflow: hidden;\\n flex: 1;\\n line-height: 1.4;\\n\"], [\"\\n min-width: 0;\\n overflow: hidden;\\n flex: 1;\\n line-height: 1.4;\\n\"])));\nvar SubTitle = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n font-size: 12px;\\n color: \", \";\\n\"], [\"\\n font-size: 12px;\\n color: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.light;\n});\nvar Title = styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n margin-top: 2px;\\n font-size: 16px;\\n font-weight: 600;\\n color: \", \";\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n\"], [\"\\n margin-top: 2px;\\n font-size: 16px;\\n font-weight: 600;\\n color: \", \";\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.standard;\n});\nvar Count = styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n font-size: 12px;\\n & > strong {\\n margin-right: 1px;\\n font-family: \", \";\\n font-weight: 900;\\n font-size: 48px;\\n line-height: 100%;\\n }\\n\"], [\"\\n font-size: 12px;\\n & > strong {\\n margin-right: 1px;\\n font-family: \", \";\\n font-weight: 900;\\n font-size: 48px;\\n line-height: 100%;\\n }\\n\"])), FONT_FAMILY.MONOSPACE);\nvar Meta = styled.div(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n margin-top: 2px;\\n display: flex;\\n height: 48px;\\n width: 320px;\\n justify-content: space-between;\\n align-items: flex-end;\\n gap: 8px;\\n\\n \", \"\\n\"], [\"\\n margin-top: 2px;\\n display: flex;\\n height: 48px;\\n width: 320px;\\n justify-content: space-between;\\n align-items: flex-end;\\n gap: 8px;\\n\\n \", \"\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return isMobile && css(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n height: 36px;\\n width: 240px;\\n\\n \", \" {\\n font-size: 11px;\\n }\\n \", \" {\\n font-size: 13px;\\n }\\n \", \" {\\n font-size: 11px;\\n > strong {\\n font-size: 36px;\\n }\\n }\\n \"], [\"\\n height: 36px;\\n width: 240px;\\n\\n \", \" {\\n font-size: 11px;\\n }\\n \", \" {\\n font-size: 13px;\\n }\\n \", \" {\\n font-size: 11px;\\n > strong {\\n font-size: 36px;\\n }\\n }\\n \"])), SubTitle, Title, Count);\n});\nvar NextPlayable = function (_a) {\n var image = _a.image, title = _a.title, subTitle = _a.subTitle, displaySecond = _a.displaySecond, onClick = _a.onClick;\n var isMobile = useContainerSize('MOBILE');\n return (jsxs(Container, { children: [jsx(Thumbnail, __assign({ src: image, isMobile: isMobile, onClick: onClick }, { children: onClick && (jsx(IconWrapper, { children: jsx(SvgPlay, {}) })) })), jsxs(Meta, __assign({ isMobile: isMobile }, { children: [jsxs(TitleContainer, { children: [jsx(SubTitle, { children: subTitle }), jsx(Title, { children: title })] }), typeof displaySecond !== 'undefined' && (jsxs(Count, { children: [jsx(\"strong\", { children: displaySecond }), jsx(\"span\", { children: \"\\u79D2\" })] }))] }))] }));\n};\nvar ReplayButton = function (props) {\n var isMobile = useContainerSize('MOBILE');\n return (jsxs(ModalityButton.Standard, __assign({ isMobile: isMobile }, props, { children: [jsx(SvgReplay, {}), jsx(\"span\", { children: \"\\u3082\\u3046\\u4E00\\u5EA6\\u89B3\\u308B\" })] })));\n};\nvar ContainerFull = styled.div(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n gap: 24px;\\n width: 100%;\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n gap: 24px;\\n width: 100%;\\n height: 100%;\\n padding: 16px;\\n box-sizing: border-box;\\n\"])));\nvar PlayableContainer = styled.div(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n gap: 12px;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n gap: 12px;\\n\"])));\nvar ThumbnailFull = styled.div(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n \", \";\\n flex-shrink: 0;\\n width: 160px;\\n height: 90px;\\n\"], [\"\\n \", \";\\n flex-shrink: 0;\\n width: 160px;\\n height: 90px;\\n\"])), ThumbnailStyle);\nvar TitleFull = styled.div(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n margin-top: 12px;\\n font-weight: 600;\\n font-size: 13px;\\n\"], [\"\\n margin-top: 12px;\\n font-weight: 600;\\n font-size: 13px;\\n\"])));\nvar CountFull = styled.div(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n font-size: 11px;\\n color: \", \";\\n & > strong {\\n margin-right: 2px;\\n font-family: \", \";\\n font-weight: 900;\\n font-size: 24px;\\n line-height: 100%;\\n color: \", \";\\n }\\n\"], [\"\\n font-size: 11px;\\n color: \", \";\\n & > strong {\\n margin-right: 2px;\\n font-family: \", \";\\n font-weight: 900;\\n font-size: 24px;\\n line-height: 100%;\\n color: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.light;\n}, FONT_FAMILY.MONOSPACE, function (_a) {\n var theme = _a.theme;\n return theme.text.standard;\n});\nvar NextPlayableFull = function (_a) {\n var image = _a.image, title = _a.title, subTitle = _a.subTitle, displaySecond = _a.displaySecond, onClick = _a.onClick, onCancelClick = _a.onCancelClick;\n var isMobile = useContainerSize('MOBILE');\n return (jsxs(ContainerFull, { children: [jsxs(PlayableContainer, { children: [jsx(ThumbnailFull, __assign({ src: image, onClick: onClick }, { children: onClick && (jsx(IconWrapper, { children: jsx(SvgPlay, {}) })) })), jsxs(\"div\", { children: [jsx(CountFull, { children: typeof displaySecond !== 'undefined' ? (jsxs(Fragment, { children: [jsx(\"strong\", { children: displaySecond }), jsx(\"span\", { children: \"\\u79D2\\u5F8C\\u306B\".concat(subTitle) })] })) : (subTitle) }), jsx(TitleFull, { children: title })] })] }), onCancelClick && (jsxs(ModalityButton.Ghost, __assign({ style: { width: '160px' }, isMobile: isMobile, onClick: onCancelClick }, { children: [jsx(SvgClose, {}), jsx(\"span\", { children: \"\\u30AD\\u30E3\\u30F3\\u30BB\\u30EB\" })] })))] }));\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17;\n\nexport { NextPlayableFull, ReplayButton, NextPlayable as default };\n//# sourceMappingURL=index.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgNextEpisode(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 51l29-19-29-19v38zM46 14h7v36h-7V14z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgNextEpisode as default };\n//# sourceMappingURL=next_episode.es.js.map\n","import { a as __makeTemplateObject, b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport styled from 'styled-components';\nimport { PaddedIconButton, TextButton } from './Button.es.js';\nimport NextPlayable from '../NextPlayable/index.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport SvgNextEpisode from '../../assets/icons/next_episode.es.js';\nimport '../../styles/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport 'react';\nimport '../../assets/icons/play.es.js';\nimport '../../assets/icons/close.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar NextPlayableContainer = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0;\\n bottom: calc(100% + 16px);\\n visibility: hidden;\\n opacity: 0;\\n transition:\\n visibility ease-in 0.15s,\\n opacity 0.15s ease-in;\\n\"], [\"\\n position: absolute;\\n left: 0;\\n bottom: calc(100% + 16px);\\n visibility: hidden;\\n opacity: 0;\\n transition:\\n visibility ease-in 0.15s,\\n opacity 0.15s ease-in;\\n\"])));\nvar Wrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: relative;\\n @media (hover: hover) {\\n & > button:hover + \", \" {\\n visibility: visible;\\n opacity: 1;\\n }\\n }\\n\"], [\"\\n position: relative;\\n @media (hover: hover) {\\n & > button:hover + \", \" {\\n visibility: visible;\\n opacity: 1;\\n }\\n }\\n\"])), NextPlayableContainer);\nvar NextPlayableButton = function (_a) {\n var iconOnly = _a.iconOnly, text = _a.text, nextPlayableProps = _a.nextPlayableProps, props = __rest(_a, [\"iconOnly\", \"text\", \"nextPlayableProps\"]);\n var isMobile = useContainerSize('MOBILE');\n return (jsxs(Wrapper, { children: [iconOnly ? (jsx(PaddedIconButton, __assign({ iconSize: isMobile ? 32 : 40 }, props, { children: jsx(SvgNextEpisode, {}) }))) : (jsxs(TextButton, __assign({ isMobile: isMobile }, props, { children: [jsx(SvgNextEpisode, {}), text && jsx(\"span\", { children: text })] }))), jsx(NextPlayableContainer, { children: jsx(NextPlayable, __assign({}, nextPlayableProps, { onClick: undefined })) })] }));\n};\nvar templateObject_1, templateObject_2;\n\nexport { NextPlayableButton, NextPlayableContainer, Wrapper };\n//# sourceMappingURL=NextPlayableButton.es.js.map\n","import { _ as __assign } from '../tslib.es6-3868aa2e.js';\n\nvar getTimeString = function (displayTime) {\n var showHour = displayTime >= 3600;\n var minuteValue = Math.floor((displayTime / 60) % 60);\n var m = showHour ? \"\".concat(minuteValue).padStart(2, '0') : minuteValue;\n var s = \"\".concat(Math.floor(displayTime % 60)).padStart(2, '0');\n var text = \"\".concat(m, \":\").concat(s);\n if (showHour) {\n var h = \"\".concat(Math.floor(displayTime / 3600)).padStart(2, '0');\n text = \"\".concat(h, \":\").concat(text);\n }\n return text;\n};\nvar chooseByWeight = function (items) {\n var _a;\n if (!items) {\n return null;\n }\n var weights = (_a = items.map(function (item) { return item.weight; })) !== null && _a !== void 0 ? _a : [];\n var r = Math.random() * weights.reduce(function (w, weight) { return weight + w; }, 0);\n var selectedWeight = 0;\n var reduced = r - weights[selectedWeight];\n while (reduced > 0) {\n selectedWeight += 1;\n reduced -= weights[selectedWeight];\n }\n return items[selectedWeight];\n};\nvar createSessionError = function (_a) {\n var status = _a.status, userName = _a.userName, deviceName = _a.deviceName, timeToWait = _a.timeToWait;\n return __assign(__assign({ type: 'session_error' }, new Error('同時視聴制限エラー')), { status: status, userName: userName, deviceName: deviceName, timeToWait: timeToWait });\n};\nvar getKeys = function (obj) {\n return Object.keys(obj);\n};\n\nexport { chooseByWeight, createSessionError, getKeys, getTimeString };\n//# sourceMappingURL=index.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled, { css } from 'styled-components';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport { FONT_FAMILY, PLAYER_UI_TRANSITION } from '../../styles/index.es.js';\n\nvar NO_IMAGE = 'NO_IMAGE';\nvar SCENE_SEARCH_CONST = {\n mainImgSize: {\n width: 320,\n height: 180,\n },\n subImgSize: {\n width: 256,\n height: 144,\n },\n subImgPadding: 4,\n};\nvar Scene = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n justify-content: center;\\n overflow: hidden;\\n flex-shrink: 0;\\n\"], [\"\\n position: relative;\\n display: flex;\\n justify-content: center;\\n overflow: hidden;\\n flex-shrink: 0;\\n\"])));\nvar SceneImage = styled.div.attrs(function (_a) {\n var imgSrc = _a.imgSrc;\n return ({\n style: imgSrc === NO_IMAGE\n ? { backgroundColor: 'black' }\n : {\n backgroundImage: \"url(\".concat(imgSrc, \")\"),\n },\n });\n})(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: \", \"px;\\n height: \", \"px;\\n background-color: \", \";\\n background-position: center;\\n background-size: contain;\\n background-repeat: no-repeat;\\n box-sizing: border-box;\\n border-radius: 4px;\\n \", \";\\n\"], [\"\\n width: \", \"px;\\n height: \", \"px;\\n background-color: \", \";\\n background-position: center;\\n background-size: contain;\\n background-repeat: no-repeat;\\n box-sizing: border-box;\\n border-radius: 4px;\\n \", \";\\n\"])), function (_a) {\n var width = _a.width;\n return width;\n}, function (_a) {\n var height = _a.height;\n return height;\n}, function (_a) {\n var theme = _a.theme;\n return theme.sceneSearch.background;\n}, function (_a) {\n var isBelt = _a.isBelt;\n return isBelt && css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n box-shadow: 0px 8px 48px -8px rgba(26, 26, 26, 0.2);\\n \"], [\"\\n border: 1px solid \", \";\\n box-shadow: 0px 8px 48px -8px rgba(26, 26, 26, 0.2);\\n \"])), function (_a) {\n var theme = _a.theme;\n return theme.sceneSearch.border;\n });\n});\nvar MainItem = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n background-color: \", \";\\n box-shadow: 0px 8px 40px -8px rgba(26, 26, 26, 0.2);\\n border-radius: 8px;\\n padding: 8px;\\n border: 1px solid \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n background-color: \", \";\\n box-shadow: 0px 8px 40px -8px rgba(26, 26, 26, 0.2);\\n border-radius: 8px;\\n padding: 8px;\\n border: 1px solid \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.sceneSearch.background;\n}, function (_a) {\n var theme = _a.theme;\n return theme.sceneSearch.border;\n});\nvar MainItemText = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n text-align: center;\\n color: \", \";\\n font-size: 14px;\\n line-height: 1;\\n font-family: \", \";\\n\"], [\"\\n text-align: center;\\n color: \", \";\\n font-size: 14px;\\n line-height: 1;\\n font-family: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.standard;\n}, FONT_FAMILY.MONOSPACE);\nvar Popup = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: absolute;\\n\"], [\"\\n position: absolute;\\n\"])));\nvar MobileSceneSearch = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: black;\\n background-size: contain;\\n background-repeat: no-repeat;\\n background-position: center;\\n transition-delay: \", \"; // \\u30B7\\u30FC\\u30F3\\u30B5\\u30FC\\u30C1\\u753B\\u50CF\\u304B\\u3089video\\u306E\\u30B7\\u30FC\\u30F3\\u306B\\u30B9\\u30E0\\u30FC\\u30BA\\u306B\\u5207\\u308A\\u66FF\\u308F\\u308B\\u3088\\u3046\\u306B\\u3001\\u6D88\\u3048\\u308B\\u306E\\u3092\\u9045\\u3089\\u305B\\u308B\\n z-index: \", \";\\n \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: black;\\n background-size: contain;\\n background-repeat: no-repeat;\\n background-position: center;\\n transition-delay: \", \"; // \\u30B7\\u30FC\\u30F3\\u30B5\\u30FC\\u30C1\\u753B\\u50CF\\u304B\\u3089video\\u306E\\u30B7\\u30FC\\u30F3\\u306B\\u30B9\\u30E0\\u30FC\\u30BA\\u306B\\u5207\\u308A\\u66FF\\u308F\\u308B\\u3088\\u3046\\u306B\\u3001\\u6D88\\u3048\\u308B\\u306E\\u3092\\u9045\\u3089\\u305B\\u308B\\n z-index: \", \";\\n \", \";\\n\"])), function (_a) {\n var show = _a.show;\n return show\n ? '0.3s'\n : '0.5s';\n}, getZIndex('SCENE_SEARCH_MOBILE'), PLAYER_UI_TRANSITION);\nvar MobilePopup = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n display: inline-block;\\n padding: 8px 16px;\\n background: \", \";\\n backdrop-filter: blur(8px);\\n border-radius: 8px;\\n\\n font-family: \", \";\\n font-size: 14px;\\n line-height: 1;\\n\"], [\"\\n display: inline-block;\\n padding: 8px 16px;\\n background: \", \";\\n backdrop-filter: blur(8px);\\n border-radius: 8px;\\n\\n font-family: \", \";\\n font-size: 14px;\\n line-height: 1;\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.sceneSearch.mobilePopup;\n}, FONT_FAMILY.MONOSPACE);\nvar Container = styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n gap: \", \"px;\\n position: absolute;\\n bottom: 164px;\\n width: 100%;\\n \", \";\\n \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n gap: \", \"px;\\n position: absolute;\\n bottom: 164px;\\n width: 100%;\\n \", \";\\n \", \";\\n\"])), SCENE_SEARCH_CONST.subImgSize.width, function (_a) {\n var show = _a.show;\n return (show ? 'transition-delay: 0.3s' : '');\n}, PLAYER_UI_TRANSITION);\nvar Left = styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n flex: 1;\\n margin-right: \", \"px;\\n display: flex;\\n flex-direction: row-reverse;\\n overflow: hidden;\\n > div {\\n margin: 0 \", \"px;\\n }\\n\"], [\"\\n flex: 1;\\n margin-right: \", \"px;\\n display: flex;\\n flex-direction: row-reverse;\\n overflow: hidden;\\n > div {\\n margin: 0 \", \"px;\\n }\\n\"])), SCENE_SEARCH_CONST.subImgPadding, SCENE_SEARCH_CONST.subImgPadding);\nvar Right = styled.div(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n flex: 1;\\n margin-left: \", \"px;\\n display: flex;\\n overflow: hidden;\\n > div {\\n margin: 0 \", \"px;\\n }\\n\"], [\"\\n flex: 1;\\n margin-left: \", \"px;\\n display: flex;\\n overflow: hidden;\\n > div {\\n margin: 0 \", \"px;\\n }\\n\"])), SCENE_SEARCH_CONST.subImgPadding, SCENE_SEARCH_CONST.subImgPadding);\nvar Center = styled.div(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n position: absolute;\\n left: 50%;\\n transform: translateX(-50%);\\n\"], [\"\\n position: absolute;\\n left: 50%;\\n transform: translateX(-50%);\\n\"])));\nvar Belt = {\n Center: Center,\n Left: Left,\n Right: Right,\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;\n\nexport { Belt, Container, MainItem, MainItemText, MobilePopup, MobileSceneSearch, NO_IMAGE, Popup, SCENE_SEARCH_CONST, Scene, SceneImage };\n//# sourceMappingURL=styles.es.js.map\n","import { useRef, useState, useContext, useEffect } from 'react';\nimport ImsParser, { PreparedStatus } from '@u-next/ims-parser';\nimport useContainerSize from './useContainerSize.es.js';\nimport { chooseByWeight } from '../utils/index.es.js';\nimport ContainerSizeContext from '../contexts/ContainerSizeContext/index.es.js';\nimport { SCENE_SEARCH_CONST, NO_IMAGE } from '../components/SceneSearch/styles.es.js';\nimport './useDeviceInfo.es.js';\nimport 'bowser';\nimport '../tslib.es6-3868aa2e.js';\nimport 'styled-components';\nimport '../styles/stackOrder.es.js';\nimport '../styles/index.es.js';\n\nvar useSceneImages = function (_a) {\n var sceneSearchList = _a.sceneSearchList, playRangeStartTime = _a.playRangeStartTime, playRangeEndTime = _a.playRangeEndTime, timeShiftOptions = _a.timeShiftOptions;\n var imsParserRef = useRef();\n var _b = useState(), imsStatus = _b[0], setImsStatus = _b[1];\n var _c = useState(playRangeStartTime !== null && playRangeStartTime !== void 0 ? playRangeStartTime : 0), sceneTime = _c[0], setSceneTime = _c[1];\n var _d = useState(3), maxOneSideImageNum = _d[0], setMaxOneSideImageNum = _d[1];\n var width = useContext(ContainerSizeContext).width;\n var isMobile = useContainerSize('MOBILE');\n useEffect(function () {\n if (width) {\n setMaxOneSideImageNum(Math.ceil((width -\n SCENE_SEARCH_CONST.subImgSize.width -\n SCENE_SEARCH_CONST.subImgPadding * 2) /\n 2 /\n (SCENE_SEARCH_CONST.subImgSize.width +\n SCENE_SEARCH_CONST.subImgPadding * 2)));\n }\n }, [width]);\n useEffect(function () {\n var _a, _b;\n var profile = isMobile ? sceneSearchList === null || sceneSearchList === void 0 ? void 0 : sceneSearchList.IMS_L : sceneSearchList === null || sceneSearchList === void 0 ? void 0 : sceneSearchList.IMS_M;\n if (!profile || timeShiftOptions) {\n return;\n }\n var url = typeof profile === 'string'\n ? profile\n : (_b = (_a = chooseByWeight(profile)) === null || _a === void 0 ? void 0 : _a.sceneSearchUrl) !== null && _b !== void 0 ? _b : '';\n var parser = new ImsParser({\n url: url,\n onPrepared: function (imsStatus) {\n setImsStatus(imsStatus);\n },\n onDownloadError: function () {\n setImsStatus(PreparedStatus.INVALID_FILE);\n },\n });\n parser.init();\n imsParserRef.current = parser;\n }, [\n isMobile,\n sceneSearchList === null || sceneSearchList === void 0 ? void 0 : sceneSearchList.IMS_L,\n sceneSearchList === null || sceneSearchList === void 0 ? void 0 : sceneSearchList.IMS_M,\n timeShiftOptions,\n ]);\n var seekedTime = sceneTime;\n var mainImg = '';\n var leftImgList = [];\n var rightImgList = [];\n if (timeShiftOptions) {\n var url_1 = timeShiftOptions.url, duration = timeShiftOptions.duration, liveDeliveryStartEpoch_1 = timeShiftOptions.liveDeliveryStartEpoch;\n if (url_1 &&\n typeof duration === 'number' &&\n typeof liveDeliveryStartEpoch_1 === 'number') {\n var sceneIntervalSec_1 = Math.ceil(duration / 10000) * 10; // 全シーンの数が1000を超えない かつ 10秒の倍数\n var getImage = function (index) {\n return url_1.replace(/\\{epoch_second\\}/, (liveDeliveryStartEpoch_1 + sceneIntervalSec_1 * index).toString());\n };\n var targetImgIndex = Math.floor(sceneTime / sceneIntervalSec_1); // シーク位置のシーン(画像)のindex\n mainImg = getImage(targetImgIndex);\n seekedTime = targetImgIndex * sceneIntervalSec_1;\n var maxImages = Math.floor(duration / sceneIntervalSec_1) + 1; // 全シーン(画像)の数\n for (var i = 1; i <= maxOneSideImageNum; i += 1) {\n var leftImgIndex = targetImgIndex - i;\n if (leftImgIndex >= 0)\n leftImgList.push(getImage(leftImgIndex));\n var rightImgIndex = targetImgIndex + i;\n if (rightImgIndex < maxImages)\n rightImgList.push(getImage(rightImgIndex));\n }\n }\n }\n else {\n var imsParser = imsParserRef.current;\n if (!imsParser || imsStatus !== PreparedStatus.OK) {\n return { seekedTime: seekedTime, setSceneTime: setSceneTime };\n }\n var targetImsIndex = imsParser.getClosestTimestampIndex(sceneTime * 1000);\n if (targetImsIndex === null) {\n return { seekedTime: seekedTime, setSceneTime: setSceneTime };\n }\n mainImg = imsParser.getImage(targetImsIndex);\n var mainImgTimestamp = imsParser.getImageTimestamp(targetImsIndex) / 1000;\n if ((playRangeStartTime && mainImgTimestamp < playRangeStartTime) ||\n (playRangeEndTime && mainImgTimestamp > playRangeEndTime)) {\n mainImg = NO_IMAGE;\n }\n seekedTime = imsParser.getImageTimestamp(targetImsIndex) / 1000;\n var maxImsImages = imsParser.getImageCount();\n for (var i = 1; i <= maxOneSideImageNum; i += 1) {\n var leftImgIndex = targetImsIndex - i;\n var leftImgTime = imsParser.getImageTimestamp(leftImgIndex) / 1000;\n if (leftImgIndex >= 0) {\n if (!playRangeStartTime || leftImgTime >= playRangeStartTime) {\n leftImgList.push(imsParser.getImage(leftImgIndex));\n }\n }\n var rightImgIndex = targetImsIndex + i;\n var rightImgTime = imsParser.getImageTimestamp(rightImgIndex) / 1000;\n if (rightImgIndex < maxImsImages) {\n if (!playRangeEndTime || rightImgTime <= playRangeEndTime) {\n rightImgList.push(imsParser.getImage(rightImgIndex));\n }\n }\n }\n }\n return {\n imsStatus: imsStatus,\n mainImg: mainImg,\n leftImgList: leftImgList,\n rightImgList: rightImgList,\n seekedTime: seekedTime,\n setSceneTime: setSceneTime,\n };\n};\n\nexport { useSceneImages as default };\n//# sourceMappingURL=useSceneImages.es.js.map\n","import { useRef, useEffect } from 'react';\n\nfunction useEffectButSkipFirstRender(effect, deps) {\n var isMounted = useRef(false);\n useEffect(function () {\n if (isMounted.current) {\n effect();\n }\n else {\n isMounted.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\nexport { useEffectButSkipFirstRender as default };\n//# sourceMappingURL=useEffectButSkipFirstRender.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgSub(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15 11a4 4 0 00-4 4v34a4 4 0 004 4h34a4 4 0 004-4V15a4 4 0 00-4-4H15zm6.956 9.595h7.719v-.558c0-.93-.062-1.55-.155-2.263h4.464c-.124.62-.155 1.302-.155 2.232v.589h8.215c1.674 0 2.51-.031 3.658-.124-.093.806-.124 1.395-.124 2.511v2.852c0 .93.062 1.674.155 2.449h-4.03v-4.061H22.328v4.061h-4.03c.124-.713.155-1.395.155-2.449v-2.852c0-1.054-.031-1.674-.124-2.511 1.116.093 1.984.124 3.627.124zm.062 13.423h8.308v-.248c0-.527-.031-1.147-.124-1.767h1.767c1.364-.837 2.2-1.395 3.007-2.17h-8.711c-1.457 0-2.356.031-3.317.155v-3.937c.96.124 1.86.155 3.317.155H37.3c1.209 0 1.767-.031 2.449-.124l1.922 2.418c-1.023.868-1.023.868-1.271 1.116-2.201 1.922-3.906 3.224-5.797 4.402h7.409c1.612 0 2.976-.062 4.06-.217v4.154a37.303 37.303 0 00-4.06-.217h-7.657v4.991c0 2.883-1.085 3.689-4.898 3.689-1.054 0-2.17-.031-3.751-.124-.217-1.395-.403-1.953-1.178-3.875 1.674.217 3.255.341 4.309.341 1.085 0 1.488-.217 1.488-.775v-4.247h-8.308c-1.488 0-2.976.062-4.03.217v-4.154c1.178.155 2.51.217 4.03.217z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgSub as default };\n//# sourceMappingURL=sub.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgSetting(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M26.167 7h11.666l.899 6.161a19.979 19.979 0 016.212 3.592l5.79-2.305 5.833 10.104-4.888 3.86c.21 1.164.32 2.363.32 3.588s-.11 2.424-.32 3.588l4.888 3.86-5.833 10.104-5.79-2.305a19.979 19.979 0 01-6.212 3.592L37.833 57H26.167l-.899-6.161a19.98 19.98 0 01-6.212-3.592l-5.79 2.305-5.833-10.104 4.888-3.86A20.114 20.114 0 0112 32c0-1.225.11-2.424.32-3.588l-4.887-3.86 5.833-10.104 5.79 2.305a19.98 19.98 0 016.212-3.592L26.167 7zM32 44c6.627 0 12-5.373 12-12s-5.373-12-12-12c-6.628 0-12 5.373-12 12s5.372 12 12 12z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgSetting as default };\n//# sourceMappingURL=setting.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgHalfArrowDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32 38.636L15.218 22 11 26.182 32 47l21-20.818L48.782 22 32 38.636z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgHalfArrowDown as default };\n//# sourceMappingURL=half_arrow_down.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgEpisode(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 9v26h48V9H8zm43 5H13v16h38V14z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 40h36v5H14v-5zM44 50H20v5h24v-5z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgEpisode as default };\n//# sourceMappingURL=episode.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgDub(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.087 24.005h-2.604v12.369h2.604V24.005z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15 11a4 4 0 00-4 4v34a4 4 0 004 4h34a4 4 0 004-4V15a4 4 0 00-4-4H15zm15.605 20.29c-.713-.806-1.023-1.085-1.953-1.705v8.339c0 1.798 0 2.325.093 3.1h-3.658V39.66h-2.604v3.038h-3.875c.093-1.116.155-2.449.155-3.844V23.478c0-1.209-.031-2.17-.093-3.131.62.062 1.147.093 2.2.093h5.705c1.054 0 1.519-.031 2.139-.093-.062.682-.062 1.085-.062 3.131v3.627c1.24-1.891 2.046-3.534 2.759-5.673.465-1.457.806-2.883.837-3.813l4.402.558c-.31.744-.31.744-.837 2.449-.044.11-.088.25-.175.531l-.135.43h6.82c1.24 0 1.736-.031 2.325-.155l1.86 2.418c-.248.465-.248.465-.682 1.798-.837 2.418-2.17 5.239-3.565 7.44-1.302-.992-2.046-1.426-3.565-2.046 1.519-1.984 2.2-3.255 3.1-5.797h-7.688c-.93 2.232-1.891 3.875-3.503 6.045zm3.162-2.759c0-.744-.031-1.24-.093-1.674h4.464c-.093.403-.124.93-.124 1.674 0 3.72 1.147 7.347 3.1 9.858 1.426 1.86 3.348 3.224 5.983 4.34-.806 1.085-1.333 2.077-2.108 4.092-2.015-1.023-3.472-2.108-5.022-3.751-1.736-1.829-2.945-3.813-3.844-6.448-.868 2.883-1.891 4.805-3.565 6.603-1.271 1.364-3.038 2.697-4.867 3.72-.868-1.488-1.488-2.356-2.573-3.379 1.767-.775 2.449-1.209 3.782-2.294 1.612-1.333 3.007-3.472 3.875-5.89.682-1.922.992-4.154.992-6.851z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgDub as default };\n//# sourceMappingURL=dub.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgCheck(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M55.9 18.844l-4.242-4.243L24.97 41.29 12.243 28.56 8 32.803l16.97 16.97L55.9 18.845z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgCheck as default };\n//# sourceMappingURL=check.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgCamera(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 18a4 4 0 014-4h32a4 4 0 014 4v10l9-9v26l-9-9v10a4 4 0 01-4 4H12a4 4 0 01-4-4V18zm13 7.5L13 32l8 6.5v-4h14V39l8-6.5-8-6.5v3.5H21v-4z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgCamera as default };\n//# sourceMappingURL=camera.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { useRef, useState, useCallback, useEffect, createElement, Fragment as Fragment$1 } from 'react';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { Wrapper, OptionButton, Title, Playable, Select, PlayableListSelectInput, SettingsSection, SettingsListContainer, SubHeading, NoticeText, OptionWithIcon } from './styles.es.js';\nimport { MobileDialog } from '../MobileDialog/index.es.js';\nimport Dialog from '../Dialog/index.es.js';\nimport { PaddedIconButton, TextButton, IconButton } from '../Button/Button.es.js';\nimport SvgPlay from '../../assets/icons/play.es.js';\nimport '../Button/NextPlayableButton.es.js';\nimport { getKeys } from '../../utils/index.es.js';\nimport useSceneImages from '../../hooks/useSceneImages.es.js';\nimport useEffectButSkipFirstRender from '../../hooks/useEffectButSkipFirstRender.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport SvgSub from '../../assets/icons/sub.es.js';\nimport SvgSetting from '../../assets/icons/setting.es.js';\nimport SvgHalfArrowDown from '../../assets/icons/half_arrow_down.es.js';\nimport SvgEpisode from '../../assets/icons/episode.es.js';\nimport SvgDub from '../../assets/icons/dub.es.js';\nimport SvgClose from '../../assets/icons/close.es.js';\nimport SvgCheck from '../../assets/icons/check.es.js';\nimport SvgCamera from '../../assets/icons/camera.es.js';\nimport 'styled-components';\nimport '../../styles/index.es.js';\nimport '@react-spring/web';\nimport '../MobileDialog/styles.es.js';\nimport '../../styles/theme.es.js';\nimport '../../styles/stackOrder.es.js';\nimport 'react-dom';\nimport '@popperjs/core';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../NextPlayable/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/next_episode.es.js';\nimport '@u-next/ims-parser';\nimport '../SceneSearch/styles.es.js';\n\nvar DialogButton = function (_a) {\n var text = _a.text, icon = _a.icon, iconOnly = _a.iconOnly, testId = _a.testId, onDialogOpen = _a.onDialogOpen, size = _a.size, position = _a.position, children = _a.children, disabled = _a.disabled, isMobileStyleDialog = _a.isMobileStyleDialog, isPlayerUIHidden = _a.isPlayerUIHidden;\n var isMobile = useContainerSize('MOBILE');\n var containerRef = useRef(null);\n var buttonRef = useRef(null);\n var _b = useState(false), isDialogOpen = _b[0], setIsDialogOpen = _b[1];\n var toggleDialog = useCallback(function (isOpen) {\n setIsDialogOpen(function (isCurrentOpen) {\n return isOpen !== undefined ? isOpen : !isCurrentOpen;\n });\n }, []);\n useEffectButSkipFirstRender(function () {\n var _a, _b;\n if (isDialogOpen) {\n (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n else {\n (_b = buttonRef.current) === null || _b === void 0 ? void 0 : _b.focus();\n }\n if (onDialogOpen !== undefined) {\n onDialogOpen(isDialogOpen);\n }\n }, [isDialogOpen, onDialogOpen]);\n useEffect(function () {\n if (isPlayerUIHidden) {\n setIsDialogOpen(false);\n }\n }, [isPlayerUIHidden]);\n return (jsxs(Wrapper, { children: [iconOnly ? (jsx(PaddedIconButton, __assign({ iconSize: isMobile ? 32 : 40, onClick: function () { return toggleDialog(); }, isActive: isDialogOpen, ref: buttonRef, title: text, disabled: disabled, \"data-ucn\": testId }, { children: icon }))) : (jsxs(TextButton, __assign({ isMobile: isMobile, onClick: function () { return toggleDialog(); }, isActive: isDialogOpen, ref: buttonRef, title: text, disabled: disabled, \"data-ucn\": testId }, { children: [icon, text && jsx(\"span\", { children: text })] }))), isMobileStyleDialog ? (jsx(MobileDialog, __assign({ isDialogOpen: isDialogOpen, onClose: function () { return toggleDialog(false); } }, { children: children({ isDialogOpen: isDialogOpen, closeDialog: function () { return toggleDialog(false); } }) }))) : (jsx(Dialog, __assign({ anchor: buttonRef.current, isDialogOpen: isDialogOpen, onClose: function () { return toggleDialog(false); }, size: size, position: position, ref: containerRef }, { children: children({ isDialogOpen: isDialogOpen, closeDialog: function () { return toggleDialog(false); } }) })))] }));\n};\nvar OptionItem = function (_a) {\n var selected = _a.selected, onClick = _a.onClick, children = _a.children, _b = _a.hasIcon, hasIcon = _b === void 0 ? false : _b, isLocked = _a.isLocked;\n var isMobile = useContainerSize('MOBILE');\n return (jsxs(OptionButton, __assign({ selected: selected, onClick: onClick, isMobile: isMobile, hasIcon: hasIcon, isLocked: isLocked }, { children: [children, jsx(SvgCheck, {})] })));\n};\nvar LiveCameraItem = function (_a) {\n var isPlaying = _a.isPlaying, displayName = _a.displayName, image = _a.image, previewUrl = _a.previewUrl, previewUpdateIntervalMs = _a.previewUpdateIntervalMs, handleCameraChange = _a.handleCameraChange, isDialogOpen = _a.isDialogOpen, closeDialog = _a.closeDialog;\n var isMobile = useContainerSize('MOBILE');\n var _b = useState((!isPlaying && previewUrl) || image), thumbnail = _b[0], setThumbnail = _b[1];\n var handleClick = useCallback(function () {\n handleCameraChange();\n window.setTimeout(function () { return closeDialog(); }, 300);\n }, [closeDialog, handleCameraChange]);\n useEffect(function () {\n var timer;\n if (previewUrl && previewUpdateIntervalMs && isDialogOpen && !isPlaying) {\n timer = setInterval(function () {\n setThumbnail(\"\".concat(previewUrl, \"?t=\").concat(Date.now()));\n }, previewUpdateIntervalMs);\n }\n return function () {\n clearInterval(timer);\n };\n }, [previewUrl, previewUpdateIntervalMs, isDialogOpen, isPlaying]);\n return (jsxs(Playable.Item, __assign({ isMobile: isMobile, onClick: handleClick, disabled: isPlaying, isPlaying: isPlaying }, { children: [jsxs(Playable.Thumbnail, { children: [jsx(\"img\", { src: thumbnail }), jsx(Playable.ThumbnailOverlay, { children: isPlaying ? jsx(\"span\", { children: \"\\u518D\\u751F\\u4E2D\" }) : jsx(SvgPlay, {}) })] }), jsx(\"div\", { children: displayName })] })));\n};\nvar TimeshiftCameraItem = function (_a) {\n var isPlaying = _a.isPlaying, displayName = _a.displayName, image = _a.image, timeshiftPreviewUrl = _a.timeshiftPreviewUrl, getCurrentTimeFromStart = _a.getCurrentTimeFromStart, deliveryStartEpoch = _a.deliveryStartEpoch, handleCameraChange = _a.handleCameraChange, isDialogOpen = _a.isDialogOpen, closeDialog = _a.closeDialog;\n var isMobile = useContainerSize('MOBILE');\n var _b = useState((!isPlaying && timeshiftPreviewUrl) || image), thumbnail = _b[0], setThumbnail = _b[1];\n var handleClick = useCallback(function () {\n handleCameraChange();\n window.setTimeout(function () { return closeDialog(); }, 300);\n }, [closeDialog, handleCameraChange]);\n useEffect(function () {\n var timer;\n if (timeshiftPreviewUrl &&\n deliveryStartEpoch &&\n isDialogOpen &&\n !isPlaying) {\n timer = setInterval(function () {\n var currentEpoch = deliveryStartEpoch + Math.floor(getCurrentTimeFromStart());\n var src = timeshiftPreviewUrl.replace(/\\{epoch_second\\}/, currentEpoch.toString());\n var img = new Image();\n img.onload = function () {\n // Change mainImg without blackout by setting it after loaded.\n setThumbnail(src);\n };\n img.onerror = function () {\n // Show blank on error (Some images are not generated because of infra issue)\n // instead of showing the default image (\"image\" in props).\n setThumbnail('');\n };\n img.src = src;\n }, 1000);\n }\n return function () {\n clearInterval(timer);\n };\n }, [\n deliveryStartEpoch,\n getCurrentTimeFromStart,\n isDialogOpen,\n isPlaying,\n timeshiftPreviewUrl,\n ]);\n return (jsxs(Playable.Item, __assign({ isMobile: isMobile, onClick: handleClick, disabled: isPlaying, isPlaying: isPlaying }, { children: [jsxs(Playable.Thumbnail, { children: [jsx(\"img\", { src: thumbnail }), jsx(Playable.ThumbnailOverlay, { children: isPlaying ? jsx(\"span\", { children: \"\\u518D\\u751F\\u4E2D\" }) : jsx(SvgPlay, {}) })] }), jsx(\"div\", { children: displayName })] })));\n};\nvar CatchupCameraItem = function (_a) {\n var isPlaying = _a.isPlaying, displayName = _a.displayName, image = _a.image, sceneSearchList = _a.sceneSearchList, handleCameraChange = _a.handleCameraChange, isDialogOpen = _a.isDialogOpen, closeDialog = _a.closeDialog, getCurrentTimeFromStart = _a.getCurrentTimeFromStart;\n var isMobile = useContainerSize('MOBILE');\n var _b = useSceneImages({\n sceneSearchList: !isPlaying ? sceneSearchList : undefined,\n playRangeStartTime: 0,\n }), mainImg = _b.mainImg, setSceneTime = _b.setSceneTime;\n var handleClick = useCallback(function () {\n handleCameraChange();\n window.setTimeout(function () { return closeDialog(); }, 300);\n }, [closeDialog, handleCameraChange]);\n useEffect(function () {\n var timer;\n if (!isPlaying && isDialogOpen) {\n timer = setInterval(function () {\n setSceneTime(getCurrentTimeFromStart());\n }, 1000);\n }\n return function () {\n clearInterval(timer);\n };\n }, [getCurrentTimeFromStart, isDialogOpen, isPlaying, setSceneTime]);\n return (jsxs(Playable.Item, __assign({ isMobile: isMobile, onClick: handleClick, disabled: isPlaying, isPlaying: isPlaying }, { children: [jsxs(Playable.Thumbnail, { children: [jsx(\"img\", { src: mainImg !== null && mainImg !== void 0 ? mainImg : image }), jsx(Playable.ThumbnailOverlay, { children: isPlaying ? jsx(\"span\", { children: \"\\u518D\\u751F\\u4E2D\" }) : jsx(SvgPlay, {}) })] }), jsx(\"div\", { children: displayName })] })));\n};\nvar CameraListButton = function (_a) {\n var iconOnly = _a.iconOnly, cameraList = _a.cameraList, onDialogOpen = _a.onDialogOpen, getCurrentTimeFromStart = _a.getCurrentTimeFromStart, isRealtime = _a.isRealtime, isTimeshift = _a.isTimeshift, deliveryStartEpoch = _a.deliveryStartEpoch, position = _a.position, isPlayerUIHidden = _a.isPlayerUIHidden;\n var isMobile = useContainerSize('MOBILE');\n var defaultPosition = iconOnly ? 'topRight' : 'bottomLeft';\n var cameraListText = 'チャンネル切替';\n return (jsx(DialogButton, __assign({ iconOnly: iconOnly, icon: jsx(SvgCamera, {}), size: \"large\", text: cameraListText, position: position !== null && position !== void 0 ? position : defaultPosition, onDialogOpen: onDialogOpen, isPlayerUIHidden: isPlayerUIHidden }, { children: function (_a) {\n var isDialogOpen = _a.isDialogOpen, closeDialog = _a.closeDialog;\n return (jsxs(Fragment, { children: [jsx(Title, __assign({ isMobile: isMobile }, { children: cameraListText })), jsx(Playable.Container, { children: cameraList.map(function (props, index) {\n return isRealtime ? (createElement(LiveCameraItem, __assign({}, props, { key: index, isDialogOpen: isDialogOpen, closeDialog: closeDialog }))) : isTimeshift ? (createElement(TimeshiftCameraItem, __assign({}, props, { key: index, isDialogOpen: isDialogOpen, closeDialog: closeDialog, getCurrentTimeFromStart: getCurrentTimeFromStart, deliveryStartEpoch: deliveryStartEpoch }))) : (createElement(CatchupCameraItem, __assign({}, props, { key: index, isDialogOpen: isDialogOpen, closeDialog: closeDialog, getCurrentTimeFromStart: getCurrentTimeFromStart })));\n }) })] }));\n } })));\n};\nvar PlayableItemComponent = function (_a) {\n var isPlaying = _a.isPlaying, disabled = _a.disabled, displayName = _a.displayName, subText = _a.subText, image = _a.image, handlePlayableChange = _a.handlePlayableChange, closeDialog = _a.closeDialog;\n var isMobile = useContainerSize('MOBILE');\n var handleClick = useCallback(function () {\n handlePlayableChange();\n window.setTimeout(function () { return closeDialog(); }, 300);\n }, [closeDialog, handlePlayableChange]);\n return (jsxs(Playable.Item, __assign({ isMobile: isMobile, onClick: handleClick, disabled: disabled, isPlaying: isPlaying, \"data-ucn\": \"player-episode-play\" }, { children: [jsxs(Playable.Thumbnail, { children: [jsx(\"img\", { src: image }), jsx(Playable.ThumbnailOverlay, { children: isPlaying ? jsx(\"span\", { children: \"\\u518D\\u751F\\u4E2D\" }) : jsx(SvgPlay, {}) })] }), jsxs(Playable.Meta, { children: [jsx(\"div\", { children: displayName }), subText && jsx(Playable.SubText, { children: subText })] })] })));\n};\nvar PlayableListButton = function (_a) {\n var _b;\n var dialogTitle = _a.dialogTitle, iconOnly = _a.iconOnly, playableList = _a.playableList, onDialogOpen = _a.onDialogOpen, position = _a.position, isPlayerUIHidden = _a.isPlayerUIHidden;\n var isMobile = useContainerSize('MOBILE');\n var defaultPosition = iconOnly ? 'topRight' : 'bottomLeft';\n var itemsPerPage = 20;\n var playableListPages = Math.ceil(playableList.length / itemsPerPage);\n var showPagingIndicator = playableListPages > 1;\n var pagingOptionList = [];\n for (var j = 0; j < playableListPages; j += 1) {\n var firstItemNum = j * itemsPerPage + 1;\n var lastItemNum = j === playableListPages - 1\n ? playableList.length\n : (j + 1) * itemsPerPage;\n pagingOptionList.push({ from: firstItemNum, to: lastItemNum });\n }\n var playingItemIndex = (_b = playableList.findIndex(function (playable) { return playable.isPlaying; })) !== null && _b !== void 0 ? _b : 0;\n var initialPageIndex = Math.floor(playingItemIndex / itemsPerPage);\n var _c = useState(initialPageIndex), currentPageIndex = _c[0], changePage = _c[1];\n var displayPlayableList = playableList.slice(itemsPerPage * currentPageIndex, itemsPerPage * (currentPageIndex + 1));\n return (jsx(DialogButton, __assign({ iconOnly: iconOnly, icon: jsx(SvgEpisode, {}), text: dialogTitle, size: \"large\", position: position !== null && position !== void 0 ? position : defaultPosition, onDialogOpen: onDialogOpen, testId: \"player-episode-toggle\", isMobileStyleDialog: isMobile, isPlayerUIHidden: isPlayerUIHidden }, { children: function (_a) {\n var closeDialog = _a.closeDialog;\n return (jsxs(Fragment, { children: [jsxs(Title, __assign({ isMobile: isMobile }, { children: [isMobile && (jsx(IconButton, __assign({ onClick: closeDialog, iconSize: \"32\" }, { children: jsx(SvgClose, {}) }))), jsx(\"span\", { children: dialogTitle }), showPagingIndicator && (jsxs(Select, { children: [jsx(PlayableListSelectInput, __assign({ defaultValue: currentPageIndex, onChange: function (e) { return changePage(Number(e.target.value)); } }, { children: pagingOptionList.map(function (_a, index) {\n var from = _a.from, to = _a.to;\n return (jsx(\"option\", __assign({ value: index }, { children: \"\".concat(from, \" - \").concat(to) }), index));\n }) })), jsx(SvgHalfArrowDown, {})] }))] })), jsx(Playable.Container, __assign({ isMobile: isMobile }, { children: displayPlayableList.map(function (props, index) { return (createElement(PlayableItemComponent, __assign({}, props, { key: index, closeDialog: closeDialog }))); }) }))] }));\n } })));\n};\nvar SettingButton = function (_a) {\n var iconOnly = _a.iconOnly, onDialogOpen = _a.onDialogOpen, settingItems = _a.settingItems, position = _a.position, isTwoColumnLayout = _a.isTwoColumnLayout, isPlayerUIHidden = _a.isPlayerUIHidden;\n var isMobile = useContainerSize('MOBILE');\n var defaultPosition = iconOnly ? 'topRight' : 'bottomLeft';\n var settingItemsArray = isTwoColumnLayout\n ? [\n settingItems.slice(0, Math.ceil(settingItems.length / 2)),\n settingItems.slice(Math.ceil(settingItems.length / 2)),\n ]\n : [settingItems];\n return (jsx(DialogButton, __assign({ iconOnly: iconOnly, icon: jsx(SvgSetting, {}), text: \"\\u8A2D\\u5B9A\", size: isTwoColumnLayout ? 'wide' : 'small', position: position !== null && position !== void 0 ? position : defaultPosition, onDialogOpen: onDialogOpen, isPlayerUIHidden: isPlayerUIHidden, testId: \"player-setting-show\" }, { children: function () { return (jsx(SettingsSection, { children: settingItemsArray.map(function (array, index) { return (jsx(SettingsListContainer, { children: array.map(function (item, index) { return (jsxs(Fragment$1, { children: [jsx(SubHeading, __assign({ isMobile: isMobile, isLocked: item.isLocked }, { children: item.name })), item.noticeText && (jsx(NoticeText, __assign({ isLocked: item.isLocked }, { children: item.noticeText }))), item.options.map(function (_a, optionIndex) {\n var selected = _a.selected, name = _a.name, handleClick = _a.handleClick;\n return (jsx(OptionItem, __assign({ selected: selected, onClick: function () { return !selected && handleClick(); }, isLocked: item.isLocked }, { children: name }), optionIndex));\n })] }, index)); }) }, index)); }) })); } })));\n};\nvar PlayModeList = {\n caption: '字幕',\n dub: '吹替',\n};\nvar PlayModeButton = function (_a) {\n var playMode = _a.playMode, changePlayMode = _a.changePlayMode, onDialogOpen = _a.onDialogOpen, position = _a.position, iconOnly = _a.iconOnly, disabled = _a.disabled, isPlayerUIHidden = _a.isPlayerUIHidden;\n var defaultPosition = iconOnly ? 'topRight' : 'bottomLeft';\n var icon = function (playMode) {\n return playMode === 'caption' ? jsx(SvgSub, {}) : jsx(SvgDub, {});\n };\n var isMobile = useContainerSize('MOBILE');\n return (jsx(DialogButton, __assign({ iconOnly: iconOnly, icon: icon(playMode), text: PlayModeList[playMode], size: \"small\", position: position !== null && position !== void 0 ? position : defaultPosition, onDialogOpen: onDialogOpen, disabled: disabled, isPlayerUIHidden: isPlayerUIHidden }, { children: function (_a) {\n var closeDialog = _a.closeDialog;\n return getKeys(PlayModeList).map(function (mode) { return (jsx(OptionItem, __assign({ selected: playMode === mode, hasIcon: true, onClick: function () {\n playMode !== mode && changePlayMode(mode);\n closeDialog();\n } }, { children: jsxs(OptionWithIcon, __assign({ isMobile: isMobile }, { children: [icon(mode), jsx(\"div\", { children: PlayModeList[mode] })] })) }), \"play-mode-\".concat(mode))); });\n } })));\n};\n\nexport { CameraListButton, DialogButton, OptionItem, PlayModeButton, PlayModeList, PlayableListButton, SettingButton };\n//# sourceMappingURL=index.es.js.map\n","import { _ as __assign } from '../../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, useState, useEffect, useCallback } from 'react';\nimport UserPlayerSettingContext from '../../../contexts/UserPlayerSetting/UserPlayerSettingContext.es.js';\nimport SvgPlaybackRate from '../../../assets/icons/playback_rate.es.js';\nimport { DialogButton, OptionItem } from '../index.es.js';\nimport '../../../hooks/useLocalStorage.es.js';\nimport '../../../hooks/useEventCallback.es.js';\nimport '../styles.es.js';\nimport 'styled-components';\nimport '../../../styles/index.es.js';\nimport '../../MobileDialog/index.es.js';\nimport '@react-spring/web';\nimport '../../MobileDialog/styles.es.js';\nimport '../../Dialog/index.es.js';\nimport 'react-dom';\nimport '@popperjs/core';\nimport '../../../styles/stackOrder.es.js';\nimport '../../../hooks/useContainerSize.es.js';\nimport '../../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../../contexts/ContainerSizeContext/index.es.js';\nimport '../../../styles/theme.es.js';\nimport '../../Button/Button.es.js';\nimport '../../../assets/icons/play.es.js';\nimport '../../Button/NextPlayableButton.es.js';\nimport '../../NextPlayable/index.es.js';\nimport '../../../assets/icons/replay.es.js';\nimport '../../../assets/icons/close.es.js';\nimport '../../../assets/icons/next_episode.es.js';\nimport '../../../utils/index.es.js';\nimport '../../../hooks/useSceneImages.es.js';\nimport '@u-next/ims-parser';\nimport '../../SceneSearch/styles.es.js';\nimport '../../../hooks/useEffectButSkipFirstRender.es.js';\nimport '../../../assets/icons/sub.es.js';\nimport '../../../assets/icons/setting.es.js';\nimport '../../../assets/icons/half_arrow_down.es.js';\nimport '../../../assets/icons/episode.es.js';\nimport '../../../assets/icons/dub.es.js';\nimport '../../../assets/icons/check.es.js';\nimport '../../../assets/icons/camera.es.js';\n\nvar PLAYBACK_RATE_LIST = [0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2];\nvar getPlaybackRateText = function (playbackRate) {\n return playbackRate === 1 ? '標準速度' : \"x \".concat(playbackRate.toFixed(1));\n};\nvar PlaybackRateButton = function (_a) {\n var iconOnly = _a.iconOnly, playbackRate = _a.playbackRate, changePlaybackRate = _a.changePlaybackRate, onDialogOpen = _a.onDialogOpen, position = _a.position, isPlayerUIHidden = _a.isPlayerUIHidden;\n var defaultPosition = iconOnly ? 'topRight' : 'bottomLeft';\n return (jsx(DialogButton, __assign({ iconOnly: iconOnly, icon: jsx(SvgPlaybackRate, {}), text: getPlaybackRateText(playbackRate), size: \"small\", position: position !== null && position !== void 0 ? position : defaultPosition, onDialogOpen: onDialogOpen, testId: \"player-setting-speed\", isPlayerUIHidden: isPlayerUIHidden }, { children: function (_a) {\n var closeDialog = _a.closeDialog;\n return PLAYBACK_RATE_LIST.map(function (rate) { return (jsx(OptionItem, __assign({ selected: playbackRate === rate, onClick: function () {\n changePlaybackRate(rate);\n closeDialog();\n } }, { children: getPlaybackRateText(rate) }), \"playback-rate-\".concat(rate))); });\n } })));\n};\nvar PlaybackRateButtonContainer = function (_a) {\n var player = _a.player, position = _a.position, iconOnly = _a.iconOnly, onDialogOpen = _a.onDialogOpen, isPlayerUIHidden = _a.isPlayerUIHidden;\n var _b = useContext(UserPlayerSettingContext), userPlayerSetting = _b.userPlayerSetting, updateUserPlayerSetting = _b.updateUserPlayerSetting;\n var keepTemporarily = player.getPlaybackRateProps().keepTemporarily;\n var _c = useState(keepTemporarily\n ? player.storage.getTemporaryPlaybackRate()\n : userPlayerSetting.playbackRate), displayPlaybackRate = _c[0], setDisplayPlaybackRate = _c[1];\n // initialize playback rate for temporary\n useEffect(function () {\n player.getVideoElement().playbackRate = keepTemporarily\n ? player.storage.getTemporaryPlaybackRate()\n : userPlayerSetting.playbackRate;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var handleRateChange = useCallback(function () {\n var newRate = player.getVideoElement().playbackRate;\n if (newRate !== 0) {\n setDisplayPlaybackRate(newRate);\n }\n }, [player]);\n // we MUST separate this userPlayerSetting update part from the ratechange handler, because otherwise\n // the handler will be changed every time userPlayerSetting is changed, which results in a weird\n // behavior when we have multiple handlers. Let's say if we have 2 ratechange handlers:\n // 1. ratechange event is fired and browser will try to fire both 2 ratechange handlers in order\n // 2. ratechange handler No.1 is called\n // 3. userPlayerSetting is changed\n // 4. both of the ratechange handlers are changed, so React will remove the old handler and add the new one\n // for both handlers\n // 5. ratechange handler No.2(old) won't be called because it has already been removed, and ratechange handler\n // No.2(new) also won't be called because it wasn't there when ratechange is fired.\n useEffect(function () {\n if (keepTemporarily) {\n player.storage.setTemporaryPlaybackRate(displayPlaybackRate);\n }\n else {\n if (displayPlaybackRate !== userPlayerSetting.playbackRate) {\n updateUserPlayerSetting({ playbackRate: displayPlaybackRate });\n }\n }\n }, [\n displayPlaybackRate,\n keepTemporarily,\n player.storage,\n updateUserPlayerSetting,\n userPlayerSetting.playbackRate,\n ]);\n useEffect(function () {\n player.getVideoElement().addEventListener('ratechange', handleRateChange);\n return function () {\n return player\n .getVideoElement()\n .removeEventListener('ratechange', handleRateChange);\n };\n }, [handleRateChange, player]);\n var changePlaybackRate = useCallback(function (n) {\n var newRate;\n if (typeof n === 'number') {\n newRate = n;\n }\n else {\n newRate = n(player.getVideoElement().playbackRate);\n }\n player.getVideoElement().playbackRate = newRate;\n }, [player]);\n return (jsx(PlaybackRateButton, { position: position, iconOnly: iconOnly, playbackRate: displayPlaybackRate, changePlaybackRate: changePlaybackRate, onDialogOpen: onDialogOpen, isPlayerUIHidden: isPlayerUIHidden }));\n};\n\nexport { PLAYBACK_RATE_LIST, PlaybackRateButton, PlaybackRateButtonContainer, getPlaybackRateText };\n//# sourceMappingURL=index.es.js.map\n","import { useState, useEffect } from 'react';\n\nfunction usePlayerOptions(player) {\n var _a = useState(player.playerOptions), playerOptions = _a[0], setPlayerOptions = _a[1];\n useEffect(function () {\n var handleOptionsChange = function (options) {\n setPlayerOptions(options);\n };\n player.onOptionsChange(handleOptionsChange);\n return function () {\n player.offOptionsChange(handleOptionsChange);\n };\n }, [player]);\n return playerOptions;\n}\nfunction checkIsRealtime(playerOptions) {\n var isRealtime = ((playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.playbackType) === 'live' && !(playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.isTimeshift)) ||\n (playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.playbackType) === 'linear';\n return isRealtime;\n}\n\nexport { checkIsRealtime, usePlayerOptions as default };\n//# sourceMappingURL=usePlayerOptions.es.js.map\n","import { useState, useEffect, useCallback } from 'react';\n\nvar usePinP = function (videoElement) {\n var _a = useState(false), isPinPEnabled = _a[0], setIsPinPEnabled = _a[1];\n var _b = useState(false), isInPinP = _b[0], setIsInPinP = _b[1];\n // Workaround Timing Issues in Chromium. Chromium is very sensitive to how PinP is exited, and as\n // exiting is an asynchronous event, it may choose to abort the exit in an unclean state where the video\n // is destroyed but the audio still plays in the background. This is a likely a Chromium bug as it does not\n // happen in other browsers that implement the PinP spec.\n //\n // To avoid this, we'll register a shutdown hook, and explicitly stop the playback before exiting if PinP is\n // enabled. Stopping the video with pause() is a synchronous event, so it will always happen before we start\n // to terminate PinP mode. Calling pause() when already paused has no effect, so it does not cause any issues\n // if the video is paused inside the PinP window.\n useEffect(function () {\n return function () {\n // check if the video element is still in the DOM. if so, no need to exit PinP\n if (!videoElement || videoElement.isConnected)\n return;\n if (document.pictureInPictureElement) {\n videoElement.pause();\n document\n .exitPictureInPicture()\n .catch(function (err) {\n return console.error('Erroring Shutting Down PinP', err);\n });\n }\n };\n }, [videoElement]);\n var togglePinP = useCallback(function () {\n if (!videoElement) {\n return;\n }\n if ('pictureInPictureEnabled' in document &&\n document.pictureInPictureEnabled &&\n !videoElement.disablePictureInPicture) {\n if (videoElement !== document.pictureInPictureElement) {\n videoElement.requestPictureInPicture();\n }\n else {\n document.exitPictureInPicture();\n }\n }\n }, [videoElement]);\n var checkAbility = useCallback(function () {\n if (videoElement) {\n setIsPinPEnabled(!!(videoElement.readyState !== 0 &&\n (('pictureInPictureEnabled' in document &&\n document.pictureInPictureEnabled &&\n !videoElement.disablePictureInPicture) ||\n (videoElement.webkitSupportsPresentationMode &&\n videoElement.webkitSetPresentationMode))));\n }\n }, [videoElement]);\n useEffect(function () {\n if (videoElement) {\n checkAbility();\n videoElement.addEventListener('loadedmetadata', checkAbility);\n videoElement.addEventListener('emptied', checkAbility);\n }\n return function () {\n if (videoElement) {\n videoElement.removeEventListener('loadedmetadata', checkAbility);\n videoElement.removeEventListener('emptied', checkAbility);\n }\n };\n }, [checkAbility, videoElement]);\n useEffect(function () {\n var handleEnterPictureInPicture = function () { return setIsInPinP(true); };\n var handleLeavePictureInPicture = function () { return setIsInPinP(false); };\n if (videoElement) {\n videoElement.addEventListener('enterpictureinpicture', handleEnterPictureInPicture);\n videoElement.addEventListener('leavepictureinpicture', handleLeavePictureInPicture);\n }\n return function () {\n if (videoElement) {\n videoElement.removeEventListener('enterpictureinpicture', handleEnterPictureInPicture);\n videoElement.removeEventListener('leavepictureinpicture', handleLeavePictureInPicture);\n }\n };\n }, [isPinPEnabled, videoElement]);\n return { isPinPEnabled: isPinPEnabled, togglePinP: togglePinP, isInPinP: isInPinP };\n};\n\nexport { usePinP as default };\n//# sourceMappingURL=usePinP.es.js.map\n","import { useRef, useEffect } from 'react';\n\nfunction useDoubleTap(element, eventHandler, disabled) {\n var firstTapFlag = useRef(false);\n var firstTapEvent = useRef();\n var firstTapTimeout = useRef();\n useEffect(function () {\n if (!element || disabled)\n return;\n function handleTouchStart(event) {\n if (firstTapFlag.current) {\n firstTapFlag.current = false;\n if (firstTapTimeout.current) {\n window.clearTimeout(firstTapTimeout.current);\n }\n if (firstTapEvent.current) {\n eventHandler(firstTapEvent.current, event);\n firstTapEvent.current = undefined;\n }\n }\n else {\n firstTapFlag.current = true;\n firstTapEvent.current = event;\n firstTapTimeout.current = window.setTimeout(function () {\n firstTapFlag.current = false;\n }, 500);\n }\n }\n element.addEventListener('touchstart', handleTouchStart, {\n capture: true,\n passive: false,\n });\n return function () {\n return element.removeEventListener('touchstart', handleTouchStart, true);\n };\n }, [element, eventHandler, disabled]);\n}\n\nexport { useDoubleTap as default };\n//# sourceMappingURL=useDoubleTap.es.js.map\n","import { useState, useEffect, useRef, useCallback } from 'react';\nimport useDoubleTap from './useDoubleTap.es.js';\n\nvar HINT_HIDE_TIME = 200;\nvar HINT_SECONDS_REST_TIME = 1000;\n// this hooks provide the function of fastforward and rewind double tap guesture\nfunction useGesture(_a) {\n var player = _a.player, onFastForward = _a.onFastForward, onRewind = _a.onRewind, disabled = _a.disabled;\n var _b = useState(null), containerElement = _b[0], setContainerElement = _b[1];\n useEffect(function () {\n player.control.waitForAttach().then(function () {\n setContainerElement(player.control.getContainerElement());\n });\n }, [player]);\n var _c = useState(false), showFastForwardHint = _c[0], setShowFastForwardHint = _c[1];\n var _d = useState(false), showRewindHint = _d[0], setShowRewindHint = _d[1];\n // These timers are used to show/hide the fast foward/rewind hint.\n // Bascially the hint will be shown right after user operates, and then gets hidden after [HINT_HIDE_TIME] milliseconds\n // by a timer. If user fast forwards/rewinds multiple times in a short time, we need to stop the previous timer, to make\n // sure the hint won't be suddenly hidden right after user operates\n var hideFastForwardHintTimer = useRef();\n var hideRewindHintTimer = useRef();\n var _e = useState(10), fastForwardHintSeconds = _e[0], setFastForwardHintSeconds = _e[1];\n var _f = useState(10), rewindHintSeconds = _f[0], setRewindHintSeconds = _f[1];\n // These timers are used to change the display seconds of fast forward/rewind.(+- 10s/20s/30s...)\n // The value of the timers could be:\n // [undefined]: means the timer is ended/not started, he hint seconds should be set to default value (10s)\n // [arbitrary number]: means a timer is ongoing, the hint seconds shoulld be increased (+10s)\n var fastForwardHintSecondsTimer = useRef();\n var rewindHintSecondsTimer = useRef();\n var handleDoubleTap = useCallback(function (prevEvent, event) {\n var targetElement = player.control.getContainerElement();\n var containerWidth = targetElement === null || targetElement === void 0 ? void 0 : targetElement.offsetWidth;\n if (!targetElement || !containerWidth)\n return;\n var targetRect = targetElement.getBoundingClientRect();\n var firstTouchClientX = prevEvent.touches[0].clientX - targetRect.left;\n var secondTouchClientX = event.touches[0].clientX - targetRect.left;\n if (firstTouchClientX >= containerWidth * 0.7 &&\n secondTouchClientX >= containerWidth * 0.7) {\n onFastForward();\n if (hideFastForwardHintTimer.current) {\n clearTimeout(hideFastForwardHintTimer.current);\n }\n if (fastForwardHintSecondsTimer.current) {\n clearTimeout(fastForwardHintSecondsTimer.current);\n setFastForwardHintSeconds(function (seconds) { return seconds + 10; });\n }\n else {\n setFastForwardHintSeconds(10);\n }\n setShowFastForwardHint(true);\n hideFastForwardHintTimer.current = window.setTimeout(function () {\n setShowFastForwardHint(false);\n }, HINT_HIDE_TIME);\n fastForwardHintSecondsTimer.current = window.setTimeout(function () {\n fastForwardHintSecondsTimer.current = undefined;\n }, HINT_SECONDS_REST_TIME);\n }\n if (firstTouchClientX <= containerWidth * 0.3 &&\n secondTouchClientX <= containerWidth * 0.3) {\n onRewind();\n if (hideRewindHintTimer.current) {\n clearTimeout(hideRewindHintTimer.current);\n }\n if (rewindHintSecondsTimer.current) {\n clearTimeout(rewindHintSecondsTimer.current);\n setRewindHintSeconds(function (seconds) { return seconds + 10; });\n }\n else {\n setRewindHintSeconds(10);\n }\n setShowRewindHint(true);\n hideRewindHintTimer.current = window.setTimeout(function () {\n setShowRewindHint(false);\n }, HINT_HIDE_TIME);\n rewindHintSecondsTimer.current = window.setTimeout(function () {\n rewindHintSecondsTimer.current = undefined;\n }, HINT_SECONDS_REST_TIME);\n }\n }, [onFastForward, onRewind, player]);\n useDoubleTap(containerElement, handleDoubleTap, disabled);\n var fastForwardHintText = \"+ \".concat(fastForwardHintSeconds, \"s\");\n var rewindHintText = \"- \".concat(rewindHintSeconds, \"s\");\n return {\n showFastForwardHint: showFastForwardHint,\n fastForwardHintText: fastForwardHintText,\n showRewindHint: showRewindHint,\n rewindHintText: rewindHintText,\n };\n}\n\nexport { useGesture as default };\n//# sourceMappingURL=useGesture.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgVolume(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56 32c0 11.183-7.649 20.58-18 23.244v-5.21C45.553 47.52 51 40.396 51 32c0-8.397-5.447-15.521-13-18.033v-5.21C48.351 11.42 56 20.816 56 32z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46 32c0 5.585-3.27 10.406-8 12.653V19.347c4.73 2.247 8 7.068 8 12.653zM33 11L19 24H8v16h11l14 13V11z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgVolume as default };\n//# sourceMappingURL=volume.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgRewind(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.082 30C8.028 30.66 8 31.326 8 32c0 13.255 10.745 24 24 24s24-10.745 24-24c0-11.892-8.65-21.764-20-23.668v5.09C44.573 15.259 51 22.879 51 32c0 10.493-8.507 19-19 19s-19-8.507-19-19c0-.675.035-1.343.104-2H8.082z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 19V4l-10 7.5L36 19z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 19V4l-10 7.5L27 19z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgRewind as default };\n//# sourceMappingURL=rewind.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgPause(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 14H17v36h10V14zM47 14H37v36h10V14z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgPause as default };\n//# sourceMappingURL=pause.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgMute(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 24l14-13v42L19 40H8V24h11zM52.01 22.454l3.536 3.536-6.01 6.01 6.01 6.01-3.536 3.536-6.01-6.01-6.01 6.01-3.536-3.535L42.464 32l-6.01-6.01 3.536-3.536 6.01 6.01 6.01-6.01z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgMute as default };\n//# sourceMappingURL=mute.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgFastForward(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 8.332C16.65 10.236 8 20.108 8 32c0 13.255 10.745 24 24 24s24-10.745 24-24c0-.674-.028-1.34-.082-2h-5.022c.069.657.104 1.325.104 2 0 10.493-8.507 19-19 19s-19-8.507-19-19c0-9.121 6.427-16.741 15-18.578v-5.09z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 19V4l10 7.5L28 19z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 19V4l10 7.5L37 19z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgFastForward as default };\n//# sourceMappingURL=fast_forward.es.js.map\n","import { a as __makeTemplateObject, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport styled, { css } from 'styled-components';\nimport { useState, useContext, useRef, useCallback, useEffect } from 'react';\nimport { PLAYBACK_RATE_LIST, getPlaybackRateText } from '../DialogButton/PlaybackRateButton/index.es.js';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport usePlayerOptions from '../../hooks/usePlayerOptions.es.js';\nimport usePinP from '../../hooks/usePinP.es.js';\nimport useGesture from '../../hooks/useGesture.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport UserPlayerSettingContext from '../../contexts/UserPlayerSetting/UserPlayerSettingContext.es.js';\nimport SvgVolume from '../../assets/icons/volume.es.js';\nimport SvgRewind from '../../assets/icons/rewind.es.js';\nimport SvgPlaybackRate from '../../assets/icons/playback_rate.es.js';\nimport SvgPlay from '../../assets/icons/play.es.js';\nimport SvgPause from '../../assets/icons/pause.es.js';\nimport SvgMute from '../../assets/icons/mute.es.js';\nimport SvgFastForward from '../../assets/icons/fast_forward.es.js';\nimport '../DialogButton/index.es.js';\nimport '../DialogButton/styles.es.js';\nimport '../../styles/index.es.js';\nimport '../MobileDialog/index.es.js';\nimport '@react-spring/web';\nimport '../MobileDialog/styles.es.js';\nimport '../Dialog/index.es.js';\nimport 'react-dom';\nimport '@popperjs/core';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../styles/theme.es.js';\nimport '../Button/Button.es.js';\nimport '../Button/NextPlayableButton.es.js';\nimport '../NextPlayable/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/close.es.js';\nimport '../../assets/icons/next_episode.es.js';\nimport '../../utils/index.es.js';\nimport '../../hooks/useSceneImages.es.js';\nimport '@u-next/ims-parser';\nimport '../SceneSearch/styles.es.js';\nimport '../../hooks/useEffectButSkipFirstRender.es.js';\nimport '../../assets/icons/sub.es.js';\nimport '../../assets/icons/setting.es.js';\nimport '../../assets/icons/half_arrow_down.es.js';\nimport '../../assets/icons/episode.es.js';\nimport '../../assets/icons/dub.es.js';\nimport '../../assets/icons/check.es.js';\nimport '../../assets/icons/camera.es.js';\nimport '../../hooks/useLocalStorage.es.js';\nimport '../../hooks/useEventCallback.es.js';\nimport '../../hooks/useDoubleTap.es.js';\n\nvar ControlHintWrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n overflow: hidden;\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n overflow: hidden;\\n\"])));\nvar CenterLayout = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 50%;\\n z-index: \", \";\\n \", \";\\n\"], [\"\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 50%;\\n z-index: \", \";\\n \", \";\\n\"])), getZIndex('CONTROL_HINT'), function (_a) {\n var show = _a.show;\n return show\n ? css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n opacity: 1;\\n transition: opacity 50ms ease-in;\\n \"], [\"\\n opacity: 1;\\n transition: opacity 50ms ease-in;\\n \"]))) : css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n opacity: 0;\\n transition: opacity 600ms ease-in;\\n \"], [\"\\n opacity: 0;\\n transition: opacity 600ms ease-in;\\n \"])));\n});\nvar CenterContainer = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: absolute;\\n margin: 0 auto;\\n left: 0;\\n right: 0;\\n transform: translateY(-50%);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 160px;\\n height: 160px;\\n background: \", \";\\n border-radius: 50%;\\n pointer-events: none;\\n\\n > svg {\\n height: 96px;\\n }\\n\\n > span {\\n position: absolute;\\n right: 0;\\n left: 0;\\n bottom: 8px;\\n text-align: center;\\n font-size: 16px;\\n line-height: 1.4;\\n font-weight: 600;\\n }\\n\\n \", \"\\n\"], [\"\\n position: absolute;\\n margin: 0 auto;\\n left: 0;\\n right: 0;\\n transform: translateY(-50%);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 160px;\\n height: 160px;\\n background: \", \";\\n border-radius: 50%;\\n pointer-events: none;\\n\\n > svg {\\n height: 96px;\\n }\\n\\n > span {\\n position: absolute;\\n right: 0;\\n left: 0;\\n bottom: 8px;\\n text-align: center;\\n font-size: 16px;\\n line-height: 1.4;\\n font-weight: 600;\\n }\\n\\n \", \"\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.centerHint.background;\n}, function (_a) {\n var isMobile = _a.isMobile;\n return isMobile && css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n width: 80px;\\n height: 80px;\\n > svg {\\n height: 48px;\\n }\\n > span {\\n bottom: 4px;\\n font-size: 10px;\\n }\\n \"], [\"\\n width: 80px;\\n height: 80px;\\n > svg {\\n height: 48px;\\n }\\n > span {\\n bottom: 4px;\\n font-size: 10px;\\n }\\n \"])));\n});\nvar SideContainer = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n display: flex;\\n flex-direction: column;\\n gap: 32px 0;\\n\\n > svg {\\n width: 64px;\\n }\\n\\n \", \"\\n\"], [\"\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n display: flex;\\n flex-direction: column;\\n gap: 32px 0;\\n\\n > svg {\\n width: 64px;\\n }\\n\\n \", \"\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return isMobile && css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n gap: 8px 0;\\n > svg {\\n width: 32px;\\n }\\n \"], [\"\\n gap: 8px 0;\\n > svg {\\n width: 32px;\\n }\\n \"])));\n});\nvar Text = styled.span(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n text-align: center;\\n font-weight: 600;\\n font-size: 13px;\\n\"], [\"\\n text-align: center;\\n font-weight: 600;\\n font-size: 13px;\\n\"])));\nvar SideOverlay = styled.div(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n position: absolute;\\n width: 70%;\\n padding-top: 70%;\\n background: \", \";\\n border-radius: 50%;\\n top: 50%;\\n pointer-events: none;\\n \", \";\\n \", \"\\n\"], [\"\\n position: absolute;\\n width: 70%;\\n padding-top: 70%;\\n background: \", \";\\n border-radius: 50%;\\n top: 50%;\\n pointer-events: none;\\n \", \";\\n \", \"\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n}, function (_a) {\n var show = _a.show;\n return show\n ? css(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n opacity: 1;\\n transition: opacity 50ms ease-in;\\n \"], [\"\\n opacity: 1;\\n transition: opacity 50ms ease-in;\\n \"]))) : css(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n opacity: 0;\\n transition: opacity 600ms ease-in;\\n \"], [\"\\n opacity: 0;\\n transition: opacity 600ms ease-in;\\n \"])));\n}, function (_a) {\n var position = _a.position;\n return position === 'right'\n ? css(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n right: 0;\\n transform: translateX(50%) translateY(-50%);\\n > \", \" {\\n left: 25%;\\n }\\n \"], [\"\\n right: 0;\\n transform: translateX(50%) translateY(-50%);\\n > \", \" {\\n left: 25%;\\n }\\n \"])), SideContainer) : css(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n left: 0;\\n transform: translateX(-50%) translateY(-50%);\\n > \", \" {\\n right: 25%;\\n }\\n \"], [\"\\n left: 0;\\n transform: translateX(-50%) translateY(-50%);\\n > \", \" {\\n right: 25%;\\n }\\n \"])), SideContainer);\n});\nvar Icon = function (_a) {\n var icon = _a.icon;\n switch (icon) {\n case undefined:\n return null;\n case 'fastForward':\n return jsx(SvgFastForward, {});\n case 'rewind':\n return jsx(SvgRewind, {});\n case 'volume':\n return jsx(SvgVolume, {});\n case 'mute':\n return jsx(SvgMute, {});\n case 'play':\n return jsx(SvgPlay, {});\n case 'pause':\n return jsx(SvgPause, {});\n case 'playbackRate':\n return jsx(SvgPlaybackRate, {});\n }\n};\nvar ControlHint = function (_a) {\n var position = _a.position, icon = _a.icon, text = _a.text, isShow = _a.isShow;\n var isMobile = useContainerSize('MOBILE');\n if (position === 'center') {\n return (jsx(CenterLayout, __assign({ show: isShow }, { children: jsxs(CenterContainer, __assign({ isMobile: isMobile }, { children: [jsx(Icon, { icon: icon }), text && jsx(\"span\", { children: text })] })) })));\n }\n return (jsx(SideOverlay, __assign({ show: isShow, position: position }, { children: jsxs(SideContainer, __assign({ isMobile: isMobile }, { children: [jsx(Icon, { icon: icon }), text && jsx(Text, { children: text })] })) })));\n};\nvar ControlHintContainer = function (_a) {\n var player = _a.player, startUITimer = _a.startUITimer, onUserActivity = _a.onUserActivity;\n var _b = useState({ show: false }), centerHint = _b[0], setCenterHint = _b[1];\n var updateUserPlayerSetting = useContext(UserPlayerSettingContext).updateUserPlayerSetting;\n var playerOptions = usePlayerOptions(player);\n var centerHintTimerRef = useRef();\n var setTimedCenterHint = useCallback(function (hint) {\n if (centerHintTimerRef.current)\n clearTimeout(centerHintTimerRef.current);\n setCenterHint(__assign(__assign({}, hint), { show: true }));\n centerHintTimerRef.current = window.setTimeout(function () {\n setCenterHint(function (prev) { return (__assign(__assign({}, prev), { show: false })); });\n }, 200);\n }, []);\n var _c = usePinP(player.getVideoElement()), isPinPEnabled = _c.isPinPEnabled, togglePinP = _c.togglePinP;\n var playbackRateProps = player.getPlaybackRateProps();\n var keepVolumeTemporarily = playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.keepVolumeTemporarily;\n var getCurrentPlaybackRateIndex = useCallback(function (player) {\n var foundPlaybackRateIndex = PLAYBACK_RATE_LIST.findIndex(function (value) { return value === player.getVideoElement().playbackRate; });\n return foundPlaybackRateIndex > -1 ? foundPlaybackRateIndex : 2;\n }, []);\n var keydownEventHandler = useCallback(function (e) {\n if (player.getVideoElement().ended)\n return;\n var key = e.key, shiftKey = e.shiftKey;\n onUserActivity && onUserActivity();\n if (key === '.') {\n player.control.seekByFrame(1);\n }\n if (key === ',') {\n player.control.seekByFrame(-1);\n }\n if (key === 'ArrowRight') {\n e.preventDefault();\n if (!player.getIsRealTime()) {\n var skipTime = shiftKey ? 30 : 10;\n player.control.seekFromCurrentTime(skipTime);\n setTimedCenterHint({\n icon: 'fastForward',\n text: \"+ \".concat(skipTime, \"s\"),\n });\n }\n }\n else if (key === 'ArrowLeft') {\n e.preventDefault();\n if (!player.getIsRealTime()) {\n var skipTime = shiftKey ? 30 : 10;\n player.control.seekFromCurrentTime(-skipTime);\n setTimedCenterHint({\n icon: 'rewind',\n text: \"- \".concat(skipTime, \"s\"),\n });\n }\n }\n else if (key === 'ArrowUp' || key === 'ArrowDown' || key === ' ') {\n // onKeyUpでこれらのshortcutが実行される前に、ブラウザのshortcutが実行されるのを防ぐ\n e.preventDefault();\n }\n }, [onUserActivity, player, setTimedCenterHint]);\n var keyupEventHandler = useCallback(function (e) {\n var _a, _b;\n if (player.getVideoElement().ended)\n return;\n var key = e.key;\n if (key === 'ArrowUp') {\n var currentValue = player.getVideoElement().volume;\n var newValue = Math.round(Math.min(currentValue + 0.1, 1) * 10) / 10;\n player.getVideoElement().volume = newValue;\n setTimedCenterHint({\n icon: 'volume',\n text: newValue * 100 + '%',\n });\n }\n else if (key === 'ArrowDown') {\n var currentValue = player.getVideoElement().volume;\n var newValue = Math.round(Math.max(currentValue - 0.1, 0) * 10) / 10;\n if (newValue === 0)\n updateUserPlayerSetting({ prevVolume: currentValue });\n player.getVideoElement().volume = newValue;\n setTimedCenterHint({\n icon: newValue === 0 ? 'mute' : 'volume',\n text: newValue * 100 + '%',\n });\n }\n else if (key === 'm') {\n if (player.getVideoElement().volume !== 0) {\n var prevVolume = player.getVideoElement().volume;\n keepVolumeTemporarily\n ? player.storage.setTemporaryVolumeProps({ prevVolume: prevVolume })\n : updateUserPlayerSetting({\n prevVolume: prevVolume,\n });\n }\n var volume = player.control.toggleMuted();\n setTimedCenterHint(volume !== 0\n ? {\n icon: 'volume',\n text: \"\".concat(Math.round(volume * 100), \"%\"),\n }\n : {\n icon: 'mute',\n });\n }\n else if (key === 'f') {\n player.control.toggleFullscreen();\n }\n else if (key === 'p') {\n isPinPEnabled && togglePinP();\n }\n else if (key === 'N') {\n (_b = (_a = player.playerOptions) === null || _a === void 0 ? void 0 : _a.playNextEpisode) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n else if (key === ' ') {\n if (!player.getIsRealTime() || player.getVideoElement().paused) {\n setTimedCenterHint({\n icon: player.getVideoElement().paused ? 'play' : 'pause',\n });\n player.control.togglePlayPause();\n }\n }\n else if (key === '>' && playbackRateProps.changeable) {\n var newPlaybackRate = PLAYBACK_RATE_LIST[Math.min(getCurrentPlaybackRateIndex(player) + 1, PLAYBACK_RATE_LIST.length - 1)];\n setTimedCenterHint({\n icon: 'playbackRate',\n text: getPlaybackRateText(newPlaybackRate),\n });\n player.getVideoElement().playbackRate = newPlaybackRate;\n }\n else if (key === '<' && playbackRateProps.changeable) {\n var newPlaybackRate = PLAYBACK_RATE_LIST[Math.max(getCurrentPlaybackRateIndex(player) - 1, 0)];\n setTimedCenterHint({\n icon: 'playbackRate',\n text: getPlaybackRateText(newPlaybackRate),\n });\n player.getVideoElement().playbackRate = newPlaybackRate;\n }\n else if (key === 'Tab') {\n // TabキーとEnterキーでボタン操作ができるよう、UIを表示する\n startUITimer && startUITimer();\n }\n }, [\n player,\n playbackRateProps.changeable,\n setTimedCenterHint,\n updateUserPlayerSetting,\n keepVolumeTemporarily,\n isPinPEnabled,\n togglePinP,\n getCurrentPlaybackRateIndex,\n startUITimer,\n ]);\n var keyupEventHandlerRef = useRef(keyupEventHandler);\n keyupEventHandlerRef.current = keyupEventHandler;\n var keydownEventHandlerRef = useRef(keydownEventHandler);\n keydownEventHandlerRef.current = keydownEventHandler;\n useEffect(function () {\n // Use useRef to make sure EventHandler will be clean up\n var realKeyupEventHandler = function (e) {\n keyupEventHandlerRef.current(e);\n };\n var realKeydownEventHandler = function (e) {\n keydownEventHandlerRef.current(e);\n };\n player.control.waitForAttach().then(function () {\n var container = player.control.getContainerElement();\n container === null || container === void 0 ? void 0 : container.addEventListener('keydown', realKeydownEventHandler);\n container === null || container === void 0 ? void 0 : container.addEventListener('keyup', realKeyupEventHandler);\n });\n return function () {\n player.control.waitForAttach().then(function () {\n var container = player.control.getContainerElement();\n container === null || container === void 0 ? void 0 : container.removeEventListener('keydown', realKeydownEventHandler);\n container === null || container === void 0 ? void 0 : container.removeEventListener('keyup', realKeyupEventHandler);\n });\n };\n }, [player]);\n return (jsx(ControlHint, { position: \"center\", icon: centerHint.icon, text: centerHint.text, isShow: centerHint.show }));\n};\nvar GestureHintContainer = function (_a) {\n var player = _a.player, forceHideUI = _a.forceHideUI, disabled = _a.disabled, onUserActivity = _a.onUserActivity;\n var _b = useGesture({\n player: player,\n onFastForward: function () {\n onUserActivity && onUserActivity();\n player.control.seekFromCurrentTime(10);\n forceHideUI(1000);\n },\n onRewind: function () {\n onUserActivity && onUserActivity();\n player.control.seekFromCurrentTime(-10);\n forceHideUI(1000);\n },\n disabled: disabled,\n }), showFastForwardHint = _b.showFastForwardHint, fastForwardHintText = _b.fastForwardHintText, showRewindHint = _b.showRewindHint, rewindHintText = _b.rewindHintText;\n return (jsxs(Fragment, { children: [jsx(ControlHint, { position: \"right\", icon: \"fastForward\", text: fastForwardHintText, isShow: showFastForwardHint }), jsx(ControlHint, { position: \"left\", icon: \"rewind\", text: rewindHintText, isShow: showRewindHint })] }));\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14;\n\nexport { ControlHintContainer, ControlHintWrapper, GestureHintContainer, ControlHint as default };\n//# sourceMappingURL=index.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { ThemeProvider } from 'styled-components';\nimport { getTheme, COLORS } from '../../styles/theme.es.js';\n\nvar ContextWrapper = function (_a) {\n var keyColor = _a.keyColor, children = _a.children;\n return (jsx(ThemeProvider, __assign({ theme: getTheme(__assign(__assign({}, COLORS), { key: keyColor || COLORS.key })) }, { children: children })));\n};\n\nexport { ContextWrapper as default };\n//# sourceMappingURL=index.es.js.map\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import jwtDecode from 'jwt-decode';\n\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\nvar __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\nfunction __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\nfunction __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;\n return g = { next: verb(0), \"throw\": verb(1), \"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\ntypeof 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\nvar createSessionError = function (_a) {\n var status = _a.status, userName = _a.userName, deviceName = _a.deviceName, timeToWait = _a.timeToWait;\n return __assign(__assign({ type: 'session_error' }, new Error('同時視聴制限エラー')), { status: status, userName: userName, deviceName: deviceName, timeToWait: timeToWait });\n};\nfunction isSessionError(e) {\n return 'type' in e && e.type === 'session_error';\n}\n\nvar BEACON_CONFIGS = {\n cms: {\n interruption: '/interruption/{fileCode}/{position}/?play_token={playToken}',\n signal: '/signal/?play_token={playToken}&file_code={fileCode}&interruption_offset_sec={position}',\n stop: '/stop/{fileCode}/{position}/?play_token={playToken}&last_viewing_flg={lastViewingFlag}',\n },\n lcms: {\n interruption: '',\n signal: '/signal/{playToken}',\n stop: '/stop/{playToken}',\n },\n};\nvar CmsSession = /** @class */ (function () {\n function CmsSession(sessionArgs) {\n var _this = this;\n this.signalTimer = null;\n this.defaultPayload = {};\n this.state = 'IDLE';\n this.htmlUnloading = false;\n this.currentTime = 0;\n this.start = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (this.state === 'STOPPED') {\n return [2 /*return*/];\n }\n this.state = 'STARTED';\n this.startSignalTimer();\n return [2 /*return*/];\n });\n }); };\n this.interruption = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.state !== 'STARTED') {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.send('interruption')];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n this.stop = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.state === 'STOPPED') {\n return [2 /*return*/];\n }\n this.state = 'STOPPED';\n this.stopSignalTimer();\n return [4 /*yield*/, this.send('stop', { lastViewingFlag: '0' })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n this.end = function (overwritePosition) { return __awaiter(_this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.state === 'STOPPED') {\n return [2 /*return*/];\n }\n this.state = 'STOPPED';\n this.stopSignalTimer();\n payload = { lastViewingFlag: '1' };\n if (typeof overwritePosition === 'number') {\n payload.position = Math.floor(overwritePosition);\n }\n return [4 /*yield*/, this.send('stop', payload)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n this.error = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.state = 'STOPPED';\n this.stopSignalTimer();\n return [4 /*yield*/, this.send('stop', { lastViewingFlag: '0' })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n this.handleTimeUpdate = function (e) {\n var videoElement = e.target;\n _this.updateCurrentTime(videoElement.currentTime);\n };\n this.handleEnded = function () {\n _this.end();\n };\n if (!sessionArgs.playbackToken) {\n throw new Error('Session requires playtoken');\n }\n var baseUrl = sessionArgs.baseUrl, interval = sessionArgs.interval, type = sessionArgs.type;\n this.baseUrl = baseUrl;\n this.signalInterval = interval;\n this.sessionType = type;\n this.initPayload(sessionArgs);\n }\n Object.defineProperty(CmsSession.prototype, \"requestHeaders\", {\n get: function () {\n return {};\n },\n enumerable: false,\n configurable: true\n });\n CmsSession.prototype.initPayload = function (sessionArgs) {\n this.defaultPayload = {\n playToken: sessionArgs.playbackToken,\n };\n if (sessionArgs.type === 'cms') {\n this.defaultPayload.fileCode = sessionArgs.meta.fileCode;\n this.defaultPayload.position = sessionArgs.meta.startTime;\n }\n };\n CmsSession.prototype.activate = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.initialize();\n return [2 /*return*/];\n });\n });\n };\n CmsSession.prototype.deactivate = function (htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.terminate(htmlUnloading)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CmsSession.prototype.attach = function (videoElement) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.initialize();\n videoElement.addEventListener('play', this.start);\n videoElement.addEventListener('pause', this.interruption);\n videoElement.addEventListener('ended', this.handleEnded);\n videoElement.addEventListener('stopped', this.stop);\n videoElement.addEventListener('timeupdate', this.handleTimeUpdate);\n videoElement.addEventListener('error', this.error);\n return [2 /*return*/];\n });\n });\n };\n CmsSession.prototype.detach = function (videoElement, htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n videoElement.removeEventListener('play', this.start);\n videoElement.removeEventListener('pause', this.interruption);\n videoElement.removeEventListener('ended', this.handleEnded);\n videoElement.removeEventListener('stopped', this.stop);\n videoElement.removeEventListener('timeupdate', this.handleTimeUpdate);\n videoElement.removeEventListener('error', this.error);\n return [4 /*yield*/, this.terminate(htmlUnloading)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CmsSession.prototype.initialize = function () {\n this.state = 'IDLE';\n this.htmlUnloading = false;\n this.currentTime = 0;\n };\n CmsSession.prototype.terminate = function (htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (htmlUnloading) {\n this.htmlUnloading = true;\n }\n return [4 /*yield*/, this.stop()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CmsSession.prototype.update = function (sessionArgs) {\n return __awaiter(this, void 0, void 0, function () {\n var needsUpdate;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.sessionType !== sessionArgs.type || !sessionArgs.playbackToken) {\n return [2 /*return*/, false];\n }\n needsUpdate = false;\n if (this.defaultPayload.playToken !== sessionArgs.playbackToken) {\n needsUpdate = true;\n }\n if (sessionArgs.type === 'cms' &&\n this.defaultPayload.fileCode !== sessionArgs.meta.fileCode) {\n needsUpdate = true;\n }\n if (!needsUpdate) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 4]);\n return [4 /*yield*/, this.stop()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n this.initPayload(sessionArgs);\n this.initialize();\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/, true];\n }\n });\n });\n };\n CmsSession.prototype.send = function (verb, overridePayload) {\n return __awaiter(this, void 0, void 0, function () {\n var urlTemplate, payload, url;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n urlTemplate = BEACON_CONFIGS[this.sessionType][verb];\n if (!urlTemplate)\n return [2 /*return*/];\n payload = __assign({}, this.defaultPayload);\n if (this.currentTime) {\n payload.position = Math.floor(this.currentTime);\n }\n else if (typeof this.defaultPayload.position === 'number') {\n payload.position = Math.floor(this.defaultPayload.position);\n }\n else {\n payload.position = 0;\n }\n if (overridePayload) {\n payload = __assign(__assign({}, payload), overridePayload);\n }\n url = urlTemplate.replace(/{([a-zA-Z]*)}/g, function (_, p1) {\n return p1 in payload ? payload[p1].toString() : '';\n });\n if (this.htmlUnloading && verb === 'stop') {\n navigator.sendBeacon(\"\".concat(this.baseUrl).concat(url), JSON.stringify({}));\n return [2 /*return*/];\n }\n return [4 /*yield*/, fetch(\"\".concat(this.baseUrl).concat(url))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CmsSession.prototype.startSignalTimer = function () {\n var _this = this;\n if (this.signalTimer || !this.signalInterval) {\n return;\n }\n var next = function () {\n _this.signalTimer = window.setTimeout(function () {\n _this.send('signal');\n next();\n }, _this.signalInterval * 1000);\n };\n next();\n };\n CmsSession.prototype.stopSignalTimer = function () {\n if (this.signalTimer) {\n window.clearTimeout(this.signalTimer);\n this.signalTimer = null;\n }\n };\n CmsSession.prototype.updateCurrentTime = function (currentTime) {\n this.currentTime = currentTime;\n };\n return CmsSession;\n}());\n\nvar IsemToken = /** @class */ (function () {\n function IsemToken(rawValue) {\n var _a;\n this.rawValue = rawValue;\n var decoded = jwtDecode(rawValue);\n this.expirationTime = (_a = decoded.exp) !== null && _a !== void 0 ? _a : 0;\n if (decoded.ex1) {\n this.liveDisplayInfo = IsemToken.parseLiveDisplayInfo(decoded.ex1);\n }\n else {\n this.liveDisplayInfo = null;\n }\n }\n // https://wiki.unext-info.jp/display/MUS/2024-10-07+signaling+of+user+display+id\n IsemToken.parseLiveDisplayInfo = function (extraString) {\n var prefix = 'xtoken:user:main:';\n if (!extraString.startsWith(prefix)) {\n return null;\n }\n var displayId = null;\n var durationSeconds = null;\n var parts = extraString.replace(prefix, '').split(';');\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n var _a = part.split('='), key = _a[0], value = _a[1];\n if (key === 'displayid') {\n displayId = value;\n }\n else if (key === 'displaydur') {\n durationSeconds = parseInt(value, 10);\n }\n }\n if (displayId === null || durationSeconds == null) {\n return null;\n }\n return {\n displayId: displayId,\n durationSeconds: durationSeconds,\n };\n };\n return IsemToken;\n}());\n\nvar createSessionErrorFromIsemResponse = function (response) {\n switch (response.status) {\n case 'IN_USE_BY_ANOTHER_CLIENT':\n case 'IN_USE_BY_ANOTHER_DEVICE':\n return createSessionError({\n status: response.status,\n userName: response.userName,\n deviceName: response.deviceName,\n });\n case 'TOO_EARLY_TO_OVERWRITE':\n return createSessionError({\n status: response.status,\n timeToWait: response.timeToWait,\n });\n default:\n return createSessionError({ status: response.status });\n }\n};\nvar IsemSession = /** @class */ (function () {\n function IsemSession(session, eventCallback) {\n var _this = this;\n this.htmlUnloading = false;\n this.error = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.stop()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n this.stop = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.cmsSession) {\n this.cmsSession.stop();\n }\n if (this.refreshTimeout) {\n window.clearTimeout(this.refreshTimeout);\n this.refreshTimeout = undefined;\n }\n if (!this.activeIsemToken) {\n return [2 /*return*/];\n }\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.destroyToken(this.activeIsemToken, this.htmlUnloading)];\n case 2:\n _b.sent();\n this.activeIsemToken = null;\n return [3 /*break*/, 4];\n case 3:\n _b.sent();\n this.activeIsemToken = null;\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.REFRESH_AHEAD_TIME_MS = 60000;\n this.MAX_RETRIES = 3;\n this.MIN_RETRY_INTERVAL_MS = 5000;\n this.session = session;\n this.sessionEventCallback = eventCallback;\n this.activeIsemToken = null;\n this.retryCount = 0;\n this.rtcSkew = 0;\n // only initialize beacon if beaconArgs are set\n if (session.beaconArgs) {\n this.cmsSession = new CmsSession(session.beaconArgs);\n }\n }\n Object.defineProperty(IsemSession.prototype, \"requestHeaders\", {\n get: function () {\n var _a, _b;\n return {\n 'U-Isem-Token': (_b = (_a = this.activeIsemToken) === null || _a === void 0 ? void 0 : _a.rawValue) !== null && _b !== void 0 ? _b : '',\n };\n },\n enumerable: false,\n configurable: true\n });\n IsemSession.prototype.nextTokenRefresh = function (isemToken) {\n var _this = this;\n var expirationTime = isemToken.expirationTime;\n var timeNow = Date.now() + this.rtcSkew;\n if (!expirationTime || expirationTime * 1000 < timeNow) {\n this.retryCount = 0;\n return;\n }\n var dueExpireMs = expirationTime * 1000 - timeNow;\n // schedule first refresh latest 60s before expiration\n // in case of retry steps, divide the remaining dueExpireMs interval by remaining retries + 1\n var nextRefreshInMs = this.retryCount > 0\n ? Math.floor(Math.max(dueExpireMs / (this.MAX_RETRIES + 1 - this.retryCount), this.MIN_RETRY_INTERVAL_MS))\n : Math.max(dueExpireMs - this.REFRESH_AHEAD_TIME_MS, 0);\n this.refreshTimeout = window.setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\n var refreshed, e_1, error;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.refreshToken(isemToken)];\n case 1:\n refreshed = _c.sent();\n if (refreshed === null) {\n this.retryCount += 1;\n }\n else {\n this.retryCount = 0;\n this.activeIsemToken = refreshed[0];\n this.rtcSkew = refreshed[1];\n (_b = (_a = this.sessionEventCallback).onSessionRefreshed) === null || _b === void 0 ? void 0 : _b.call(_a, this.activeIsemToken);\n }\n if (this.retryCount < this.MAX_RETRIES && this.activeIsemToken) {\n this.nextTokenRefresh(this.activeIsemToken);\n }\n return [3 /*break*/, 3];\n case 2:\n e_1 = _c.sent();\n error = e_1;\n if (isSessionError(error)) {\n this.sessionEventCallback.onSessionError(error);\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); }, nextRefreshInMs);\n };\n IsemSession.prototype.activateToken = function (isemToken, overwrite) {\n var _a;\n if (overwrite === void 0) { overwrite = false; }\n return __awaiter(this, void 0, void 0, function () {\n var response, token, dateHeader, rtcSkew, activateResponse;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, fetch(\"\".concat(this.session.baseUrl, \"/activate_token?device_id=\").concat(this.session.deviceId, \"&overwrite=\").concat(overwrite), {\n method: 'POST',\n headers: {\n 'U-Isem-Token': isemToken.rawValue,\n },\n body: JSON.stringify({}),\n })];\n case 1:\n response = _b.sent();\n if (!response.ok) return [3 /*break*/, 3];\n return [4 /*yield*/, response.json()];\n case 2:\n token = (_b.sent()).token;\n dateHeader = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('Date');\n rtcSkew = dateHeader ? Date.parse(dateHeader) - Date.now() : 0;\n return [2 /*return*/, [new IsemToken(token), rtcSkew]];\n case 3:\n if (!(response.status === 400)) return [3 /*break*/, 5];\n return [4 /*yield*/, response.json()];\n case 4:\n activateResponse = (_b.sent());\n throw createSessionErrorFromIsemResponse(activateResponse);\n case 5: throw new Error('Failed to activate session');\n }\n });\n });\n };\n IsemSession.prototype.refreshToken = function (isemToken, overwrite) {\n var _a;\n if (overwrite === void 0) { overwrite = false; }\n return __awaiter(this, void 0, void 0, function () {\n var response, token, dateHeader, rtcSkew, refreshResponse;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, fetch(\"\".concat(this.session.baseUrl, \"/refresh_token?device_id=\").concat(this.session.deviceId, \"&overwrite=\").concat(overwrite), {\n method: 'POST',\n headers: {\n 'U-Isem-Token': isemToken.rawValue,\n },\n body: JSON.stringify({}),\n })];\n case 1:\n response = _b.sent();\n if (!response.ok) return [3 /*break*/, 3];\n return [4 /*yield*/, response.json()];\n case 2:\n token = (_b.sent()).token;\n dateHeader = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('Date');\n rtcSkew = dateHeader ? Date.parse(dateHeader) - Date.now() : 0;\n return [2 /*return*/, [new IsemToken(token), rtcSkew]];\n case 3:\n if (!(response.status === 400)) return [3 /*break*/, 5];\n return [4 /*yield*/, response.json()];\n case 4:\n refreshResponse = (_b.sent());\n throw createSessionErrorFromIsemResponse(refreshResponse);\n case 5: \n // fail gracefully and retry\n return [2 /*return*/, null];\n }\n });\n });\n };\n IsemSession.prototype.destroyToken = function (isemToken, htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (htmlUnloading) {\n navigator.sendBeacon(\"\".concat(this.session.baseUrl, \"/discard_token?device_id=\").concat(this.session.deviceId), new Blob([JSON.stringify({ isemToken: isemToken.rawValue })], {\n type: 'application/json',\n }));\n return [2 /*return*/];\n }\n return [4 /*yield*/, fetch(\"\".concat(this.session.baseUrl, \"/discard_token?device_id=\").concat(this.session.deviceId), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ isemToken: isemToken.rawValue }),\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n IsemSession.prototype.initialize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var initialToken, _a, activatedToken, clockSkew;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n initialToken = new IsemToken(this.session.isemToken);\n return [4 /*yield*/, this.activateToken(initialToken, this.session.overwrite)];\n case 1:\n _a = _b.sent(), activatedToken = _a[0], clockSkew = _a[1];\n this.activeIsemToken = activatedToken;\n this.rtcSkew = clockSkew;\n this.retryCount = 0;\n this.nextTokenRefresh(activatedToken);\n this.sessionEventCallback.onSessionActivated(activatedToken);\n return [2 /*return*/];\n }\n });\n });\n };\n IsemSession.prototype.terminate = function (htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (htmlUnloading) {\n this.htmlUnloading = true;\n }\n return [4 /*yield*/, this.stop()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * either use this OR `attach()`, not both\n */\n IsemSession.prototype.activate = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.initialize()];\n case 1:\n _a.sent();\n if (!this.cmsSession) return [3 /*break*/, 3];\n return [4 /*yield*/, this.cmsSession.activate()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * either use this OR `detach()`, not both\n */\n IsemSession.prototype.deactivate = function (htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.terminate(htmlUnloading)];\n case 1:\n _a.sent();\n if (!this.cmsSession) return [3 /*break*/, 3];\n return [4 /*yield*/, this.cmsSession.deactivate(htmlUnloading)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * wrapper for `initialize()` for clients with HTMLVideoElement\n * either use this OR `activate()`, not both\n */\n IsemSession.prototype.attach = function (videoElement) {\n return __awaiter(this, void 0, void 0, function () {\n var e_2, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // isem event\n videoElement.addEventListener('error', this.error);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.initialize()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n error = e_2;\n if (isSessionError(error)) {\n this.sessionEventCallback.onSessionError(error);\n }\n return [3 /*break*/, 4];\n case 4:\n if (!this.cmsSession) return [3 /*break*/, 6];\n return [4 /*yield*/, this.cmsSession.attach(videoElement)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * wrapper for `terminate()` for clients with HTMLVideoElement\n * either use this OR `deactivate()`, not both\n */\n IsemSession.prototype.detach = function (videoElement, htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.terminate(htmlUnloading)];\n case 1:\n _a.sent();\n videoElement.removeEventListener('error', this.error);\n if (!this.cmsSession) return [3 /*break*/, 3];\n return [4 /*yield*/, this.cmsSession.detach(videoElement, htmlUnloading)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n IsemSession.prototype.update = function (sessionArgs) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, isemUpdateResult, beaconUpdateResult;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (sessionArgs.type !== 'isem') {\n return [2 /*return*/, false];\n }\n return [4 /*yield*/, Promise.all([\n this.isemUpdate(sessionArgs),\n this.beaconUpdate(sessionArgs.beaconArgs),\n ])];\n case 1:\n _a = _b.sent(), isemUpdateResult = _a[0], beaconUpdateResult = _a[1];\n return [2 /*return*/, isemUpdateResult && beaconUpdateResult];\n }\n });\n });\n };\n IsemSession.prototype.isemUpdate = function (sessionArgs) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var refreshed;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(this.session.isemToken !== sessionArgs.isemToken)) return [3 /*break*/, 6];\n _c.label = 1;\n case 1:\n _c.trys.push([1, , 3, 5]);\n return [4 /*yield*/, this.stop()];\n case 2:\n _c.sent();\n this.session.isemToken = sessionArgs.isemToken;\n this.session.baseUrl = sessionArgs.baseUrl;\n return [3 /*break*/, 5];\n case 3: \n // activate new ISEM token\n return [4 /*yield*/, this.initialize()];\n case 4:\n // activate new ISEM token\n _c.sent();\n return [7 /*endfinally*/];\n case 5: return [3 /*break*/, 10];\n case 6:\n // re-load playlist changing session control overwrite flag\n // false -> true: force overwrite (後勝ち再生)\n // true -> false: switch to 前勝ち再生 mode\n this.session.overwrite = sessionArgs.overwrite;\n if (!this.session.overwrite) return [3 /*break*/, 10];\n if (!!this.activeIsemToken) return [3 /*break*/, 8];\n return [4 /*yield*/, this.initialize()];\n case 7:\n _c.sent();\n return [3 /*break*/, 10];\n case 8: return [4 /*yield*/, this.refreshToken(this.activeIsemToken, true)];\n case 9:\n refreshed = _c.sent();\n if (refreshed) {\n this.retryCount = 0;\n this.activeIsemToken = refreshed[0];\n this.rtcSkew = refreshed[1];\n (_b = (_a = this.sessionEventCallback).onSessionRefreshed) === null || _b === void 0 ? void 0 : _b.call(_a, this.activeIsemToken);\n }\n else {\n this.retryCount = 1;\n }\n this.nextTokenRefresh(this.activeIsemToken);\n _c.label = 10;\n case 10: return [2 /*return*/, true];\n }\n });\n });\n };\n IsemSession.prototype.beaconUpdate = function (beaconArgs) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!beaconArgs)\n return [2 /*return*/, true]; // if beacon is not set, no update is needed\n if (!this.cmsSession)\n return [2 /*return*/, false];\n return [4 /*yield*/, this.cmsSession.update(beaconArgs)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n return IsemSession;\n}());\n\n/**\n *@param videoPlaybackItem required for CMS/LCMS session\n *@param eventCallback required for ISEM session\n */\nvar createSession = function (session, eventCallback) {\n if (session.type === 'cms' || session.type === 'lcms') {\n return new CmsSession(session);\n }\n else if (eventCallback && session.type === 'isem') {\n return new IsemSession(session, eventCallback);\n }\n throw new Error('Invalid args');\n};\n\nexport { IsemToken, createSession, createSessionError, isSessionError };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5lc20uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90c2xpYkAyLjYuMy9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIi4uL3NyYy91dGlscy9pbmRleC50cyIsIi4uL3NyYy9iZWFjb24udHMiLCIuLi9zcmMvSXNlbVRva2VuLnRzIiwiLi4vc3JjL2lzZW1TZXNzaW9uLnRzIiwiLi4vc3JjL3Nlc3Npb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXG5cblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Jcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xuICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xufVxuXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XG4gICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgfVxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgdFtwXSA9IHNbcF07XG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgfVxuICByZXR1cm4gdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XG4gIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxuICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xuICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcbiAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XG4gIHZhciBfLCBkb25lID0gZmFsc2U7XG4gIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHt9O1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XG4gICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcbiAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XG4gICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcbiAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xuICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xuICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcbiAgICAgIH1cbiAgfVxuICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XG4gIGRvbmUgPSB0cnVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcbiAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XG4gIH1cbiAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xuICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcbiAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gIG9bazJdID0gbVtrXTtcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcbiAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xuICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghbSkgcmV0dXJuIG87XG4gIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICB0cnkge1xuICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gIGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICB9XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XG4gIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xuICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcbiAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgcltrXSA9IGFbal07XG4gIHJldHVybiByO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xuICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgfVxuICB9XG4gIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChnW25dKSB7IGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IGlmIChmKSBpW25dID0gZihpW25dKTsgfSB9XG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcbiAgdmFyIGksIHA7XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcbiAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XG4gIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XG4gIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XG4gIHJldHVybiBjb29rZWQ7XG59O1xuXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICBvW1wiZGVmYXVsdFwiXSA9IHY7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xuICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcbiAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcbiAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcbiAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcbiAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XG4gIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xuICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcbiAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XG4gICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xuICAgIGlmIChhc3luYykge1xuICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XG4gICAgfVxuICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcbiAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XG4gICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xuICAgICAgaWYgKGFzeW5jKSBpbm5lciA9IGRpc3Bvc2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGlzcG9zZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IG5vdCBkaXNwb3NhYmxlLlwiKTtcbiAgICBpZiAoaW5uZXIpIGRpc3Bvc2UgPSBmdW5jdGlvbigpIHsgdHJ5IHsgaW5uZXIuY2FsbCh0aGlzKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7IH0gfTtcbiAgICBlbnYuc3RhY2sucHVzaCh7IHZhbHVlOiB2YWx1ZSwgZGlzcG9zZTogZGlzcG9zZSwgYXN5bmM6IGFzeW5jIH0pO1xuICB9XG4gIGVsc2UgaWYgKGFzeW5jKSB7XG4gICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XG4gIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcbiAgZnVuY3Rpb24gZmFpbChlKSB7XG4gICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xuICAgIGVudi5oYXNFcnJvciA9IHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAoZW52LnN0YWNrLmxlbmd0aCkge1xuICAgICAgdmFyIHJlYyA9IGVudi5zdGFjay5wb3AoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWMuZGlzcG9zZSAmJiByZWMuZGlzcG9zZS5jYWxsKHJlYy52YWx1ZSk7XG4gICAgICAgIGlmIChyZWMuYXN5bmMpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIF9fZXh0ZW5kcyxcbiAgX19hc3NpZ24sXG4gIF9fcmVzdCxcbiAgX19kZWNvcmF0ZSxcbiAgX19wYXJhbSxcbiAgX19tZXRhZGF0YSxcbiAgX19hd2FpdGVyLFxuICBfX2dlbmVyYXRvcixcbiAgX19jcmVhdGVCaW5kaW5nLFxuICBfX2V4cG9ydFN0YXIsXG4gIF9fdmFsdWVzLFxuICBfX3JlYWQsXG4gIF9fc3ByZWFkLFxuICBfX3NwcmVhZEFycmF5cyxcbiAgX19zcHJlYWRBcnJheSxcbiAgX19hd2FpdCxcbiAgX19hc3luY0dlbmVyYXRvcixcbiAgX19hc3luY0RlbGVnYXRvcixcbiAgX19hc3luY1ZhbHVlcyxcbiAgX19tYWtlVGVtcGxhdGVPYmplY3QsXG4gIF9faW1wb3J0U3RhcixcbiAgX19pbXBvcnREZWZhdWx0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxuICBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXG4gIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxuICBfX2Rpc3Bvc2VSZXNvdXJjZXMsXG59O1xuIixudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFpQkE7QUFDTyxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2pDLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ25ELE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0QsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsT0FBTztBQUNQLE1BQU0sT0FBTyxDQUFDLENBQUM7QUFDZixJQUFHO0FBQ0gsRUFBRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLEVBQUM7QUF5RUQ7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsRUFBRSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDOUcsRUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDN0QsTUFBTSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ2pHLE1BQU0sU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3BHLE1BQU0sU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3BILE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNEO0FBQ08sU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUMzQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkgsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzSixFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3BFLEVBQUUsU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDcEQsVUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2SyxVQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEQsVUFBVSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsY0FBYyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNO0FBQzVDLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3RFLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUMvRCxjQUFjLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVM7QUFDL0QsY0FBYztBQUNkLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQzlILGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ3hHLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDdkYsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENB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\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled, { css } from 'styled-components';\n\nvar RangeInputStyleReset = css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\\n appearance: none; /* Hides the slider so that custom slider can be made */\\n -webkit-tap-highlight-color: transparent;\\n width: 100%; /* Specific width is required for Firefox. */\\n height: 100%;\\n background: transparent; /* Otherwise white in Chrome */\\n margin: 0;\\n\\n &::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n }\\n\\n &::-moz-range-thumb {\\n border: none;\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &::-ms-track {\\n width: 100%;\\n cursor: pointer;\\n\\n /* Hides the slider so custom styles can be added */\\n background: transparent;\\n border-color: transparent;\\n color: transparent;\\n }\\n\"], [\"\\n position: absolute;\\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\\n appearance: none; /* Hides the slider so that custom slider can be made */\\n -webkit-tap-highlight-color: transparent;\\n width: 100%; /* Specific width is required for Firefox. */\\n height: 100%;\\n background: transparent; /* Otherwise white in Chrome */\\n margin: 0;\\n\\n &::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n }\\n\\n &::-moz-range-thumb {\\n border: none;\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &::-ms-track {\\n width: 100%;\\n cursor: pointer;\\n\\n /* Hides the slider so custom styles can be added */\\n background: transparent;\\n border-color: transparent;\\n color: transparent;\\n }\\n\"])));\nvar ThumbStyle = css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: 0;\\n height: 20px;\\n background: \", \";\\n cursor: pointer;\\n\"], [\"\\n width: 0;\\n height: 20px;\\n background: \", \";\\n cursor: pointer;\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.volumeBar.key;\n});\nvar TrackStyle = css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: 100%;\\n height: 8px;\\n cursor: pointer;\\n\"], [\"\\n width: 100%;\\n height: 8px;\\n cursor: pointer;\\n\"])));\nvar RangeInputStyle = css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n &::-webkit-slider-thumb {\\n \", \"\\n\\n margin-top: -6px;\\n }\\n\\n &::-webkit-slider-runnable-track {\\n \", \"\\n }\\n\\n &::-moz-range-thumb {\\n \", \"\\n }\\n\\n &::-moz-range-track {\\n \", \"\\n }\\n\\n &::-ms-thumb {\\n \", \"\\n }\\n\\n &::-ms-track {\\n \", \"\\n }\\n\"], [\"\\n &::-webkit-slider-thumb {\\n \", \"\\n\\n margin-top: -6px;\\n }\\n\\n &::-webkit-slider-runnable-track {\\n \", \"\\n }\\n\\n &::-moz-range-thumb {\\n \", \"\\n }\\n\\n &::-moz-range-track {\\n \", \"\\n }\\n\\n &::-ms-thumb {\\n \", \"\\n }\\n\\n &::-ms-track {\\n \", \"\\n }\\n\"])), ThumbStyle, TrackStyle, ThumbStyle, TrackStyle, ThumbStyle, TrackStyle);\nvar RangeInputWrapper = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: relative;\\n height: 20px;\\n width: 0px;\\n touch-action: none;\\n transition: width 0.15s ease-in;\\n\"], [\"\\n position: relative;\\n height: 20px;\\n width: 0px;\\n touch-action: none;\\n transition: width 0.15s ease-in;\\n\"])));\nvar Track = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: absolute;\\n display: flex;\\n justify-content: flex-start;\\n top: 50%;\\n margin-top: -4px;\\n width: 100%;\\n height: 8px;\\n border-radius: 4px;\\n background: \", \";\\n\"], [\"\\n position: absolute;\\n display: flex;\\n justify-content: flex-start;\\n top: 50%;\\n margin-top: -4px;\\n width: 100%;\\n height: 8px;\\n border-radius: 4px;\\n background: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.volumeBar.base;\n});\nvar FillTrack = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n position: absolute;\\n height: 100%;\\n border-radius: 4px;\\n background: \", \";\\n flex-shrink: 0;\\n\"], [\"\\n position: absolute;\\n height: 100%;\\n border-radius: 4px;\\n background: \", \";\\n flex-shrink: 0;\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.volumeBar.key;\n});\nvar VolumeBarInput = styled.input(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n cursor: pointer;\\n\"], [\"\\n \", \";\\n \", \";\\n cursor: pointer;\\n\"])), RangeInputStyleReset, RangeInputStyle);\nvar Wrapper = styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n gap: 0px;\\n @media (hover: hover) {\\n --range-width: 64px;\\n --gap: 4px;\\n --padding-left: 4px;\\n margin-left: calc(\\n var(--padding-left) + var(--range-width) + var(--gap)\\n ); // to keep Wrapper's parent width before and after hovering\\n transition: all 0.15s ease-in;\\n &:hover {\\n margin-left: 0px;\\n padding-left: var(--padding-left);\\n gap: var(--gap);\\n > \", \" {\\n width: var(--range-width);\\n }\\n }\\n }\\n\"], [\"\\n display: flex;\\n align-items: center;\\n gap: 0px;\\n @media (hover: hover) {\\n --range-width: 64px;\\n --gap: 4px;\\n --padding-left: 4px;\\n margin-left: calc(\\n var(--padding-left) + var(--range-width) + var(--gap)\\n ); // to keep Wrapper's parent width before and after hovering\\n transition: all 0.15s ease-in;\\n &:hover {\\n margin-left: 0px;\\n padding-left: var(--padding-left);\\n gap: var(--gap);\\n > \", \" {\\n width: var(--range-width);\\n }\\n }\\n }\\n\"])), RangeInputWrapper);\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;\n\nexport { FillTrack, RangeInputWrapper, Track, VolumeBarInput, Wrapper };\n//# sourceMappingURL=styles.es.js.map\n","import { b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { useState, useMemo, useEffect, useCallback, useContext } from 'react';\nimport { RangeInputWrapper, Track, FillTrack, VolumeBarInput, Wrapper } from './styles.es.js';\nimport { IconButton } from '../Button/Button.es.js';\nimport '../Button/NextPlayableButton.es.js';\nimport usePlayerOptions from '../../hooks/usePlayerOptions.es.js';\nimport UserPlayerSettingContext from '../../contexts/UserPlayerSetting/UserPlayerSettingContext.es.js';\nimport SvgVolume from '../../assets/icons/volume.es.js';\nimport SvgMute from '../../assets/icons/mute.es.js';\nimport 'styled-components';\nimport '../NextPlayable/index.es.js';\nimport '../../styles/index.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/play.es.js';\nimport '../../assets/icons/close.es.js';\nimport '../../assets/icons/next_episode.es.js';\nimport '../../hooks/useLocalStorage.es.js';\nimport '../../hooks/useEventCallback.es.js';\n\n/**\n * VolumeBar exposes the same interface as input[type=\"range\"]\n */\nvar VolumeBar = function (_a) {\n var value = _a.value, onInput = _a.onInput, onChangeStart = _a.onChangeStart, props = __rest(_a, [\"value\", \"onInput\", \"onChangeStart\"]);\n var _b = useState(value), currentValue = _b[0], setCurrentValue = _b[1];\n var width = useMemo(function () { return \"\".concat(Math.round(Number(currentValue) * 100), \"%\"); }, [currentValue]);\n useEffect(function () {\n setCurrentValue(value);\n }, [value]);\n return (jsxs(RangeInputWrapper, { children: [jsx(Track, { children: jsx(FillTrack, { style: {\n width: width,\n } }) }), jsx(VolumeBarInput, __assign({ type: \"range\", min: 0, max: 1, step: 0.01, value: currentValue, onMouseDown: function (e) {\n if (onChangeStart) {\n onChangeStart(Number(e.target.value));\n }\n }, onInput: function (e) {\n setCurrentValue(Number(e.target.value));\n if (onInput) {\n onInput(e);\n }\n } }, props))] }));\n};\nvar VolumeButton = function (_a) {\n var iconSize = _a.iconSize, isMuted = _a.isMuted, value = _a.value, changeVolume = _a.changeVolume, toggleMuted = _a.toggleMuted, onVolumeChangeStart = _a.onVolumeChangeStart;\n var onVolumeChange = useCallback(function (e) {\n return changeVolume(Number(e.target.value));\n }, [changeVolume]);\n return (jsx(\"div\", { children: jsxs(Wrapper, { children: [jsx(VolumeBar, { tabIndex: -1, value: value, onInput: onVolumeChange, onChangeStart: onVolumeChangeStart }), jsx(IconButton, __assign({ onClick: function () { return toggleMuted(); }, iconSize: iconSize, title: \"\\u97F3\\u91CF\", \"data-ucn\": \"player-playerControl-mute\" }, { children: isMuted ? jsx(SvgMute, {}) : jsx(SvgVolume, {}) }))] }) }));\n};\nvar VolumeButtonContainer = function (_a) {\n var _b;\n var player = _a.player, buttonIconSize = _a.buttonIconSize;\n var _c = useContext(UserPlayerSettingContext), userPlayerSetting = _c.userPlayerSetting, updateUserPlayerSetting = _c.updateUserPlayerSetting;\n var keepTemporarily = (_b = usePlayerOptions(player)) === null || _b === void 0 ? void 0 : _b.keepVolumeTemporarily;\n var _d = useState(keepTemporarily\n ? player.storage.getTemporaryVolumeProps().volume\n : userPlayerSetting.volume), displayVolume = _d[0], setDisplayVolume = _d[1];\n // set initial volume/prevVolume\n useEffect(function () {\n if (keepTemporarily) {\n var _a = player.storage.getTemporaryVolumeProps(), volume = _a.volume, prevVolume = _a.prevVolume;\n player.getVideoElement().volume = volume;\n player.control.setPrevVolume(prevVolume);\n }\n else {\n player.getVideoElement().volume = userPlayerSetting.volume;\n player.control.setPrevVolume(userPlayerSetting.prevVolume);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var handleVolumeChange = useCallback(function () {\n var volume = player.getVideoElement().volume;\n setDisplayVolume(volume);\n keepTemporarily\n ? player.storage.setTemporaryVolumeProps({ volume: volume })\n : updateUserPlayerSetting({ volume: volume });\n }, [keepTemporarily, player, updateUserPlayerSetting]);\n useEffect(function () {\n player\n .getVideoElement()\n .addEventListener('volumechange', handleVolumeChange);\n return function () {\n return player\n .getVideoElement()\n .removeEventListener('volumechange', handleVolumeChange);\n };\n }, [handleVolumeChange, player]);\n return (jsx(VolumeButton, { iconSize: buttonIconSize, value: displayVolume, isMuted: displayVolume === 0, changeVolume: function (v) {\n player.getVideoElement().volume = v;\n }, onVolumeChangeStart: function (v) {\n player.control.setPrevVolume(v);\n keepTemporarily\n ? player.storage.setTemporaryVolumeProps({ prevVolume: v })\n : updateUserPlayerSetting({ prevVolume: v });\n }, toggleMuted: function () {\n if (player.getVideoElement().volume !== 0) {\n var prevVolume = player.getVideoElement().volume;\n keepTemporarily\n ? player.storage.setTemporaryVolumeProps({ prevVolume: prevVolume })\n : updateUserPlayerSetting({\n prevVolume: prevVolume,\n });\n }\n player.control.toggleMuted();\n } }));\n};\n\nexport { VolumeBar, VolumeButton, VolumeButtonContainer };\n//# sourceMappingURL=index.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled from 'styled-components';\nimport { animated } from '@react-spring/web';\nimport { DialogCss } from '../Dialog/index.es.js';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport { FONT_FAMILY } from '../../styles/index.es.js';\nimport 'react/jsx-runtime';\nimport 'react-dom';\nimport 'react';\nimport '@popperjs/core';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar DialogContent = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n \", \";\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n width: 100%;\\n max-width: 640px;\\n max-height: calc(100% - 16px);\\n margin: 32px;\\n padding: 16px;\\n z-index: \", \";\\n\"], [\"\\n \", \";\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n width: 100%;\\n max-width: 640px;\\n max-height: calc(100% - 16px);\\n margin: 32px;\\n padding: 16px;\\n z-index: \", \";\\n\"])), DialogCss, getZIndex('SHORTCUT_TABLE'));\nvar DialogHeading = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n gap: 16px;\\n align-items: center;\\n font-weight: 600;\\n font-size: 16px;\\n\\n svg {\\n color: \", \";\\n }\\n\"], [\"\\n display: flex;\\n gap: 16px;\\n align-items: center;\\n font-weight: 600;\\n font-size: 16px;\\n\\n svg {\\n color: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.faded;\n});\nvar DialogBody = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n overflow-y: auto;\\n\"], [\"\\n overflow-y: auto;\\n\"])));\nvar Annotation = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n margin-top: 8px;\\n font-size: 12px;\\n line-height: 1.4;\\n color: \", \";\\n\"], [\"\\n margin-top: 8px;\\n font-size: 12px;\\n line-height: 1.4;\\n color: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.light;\n});\nvar Wrapper = styled(animated.div)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\"], [\"\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\"])));\nvar Mask = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0%;\\n right: 0%;\\n top: 0%;\\n bottom: 0%;\\n background: \", \";\\n\"], [\"\\n position: absolute;\\n left: 0%;\\n right: 0%;\\n top: 0%;\\n bottom: 0%;\\n background: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n});\nvar Table = styled.ul(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n list-style-type: none;\\n columns: 262px auto;\\n column-gap: 16px;\\n padding: 0;\\n margin: 0;\\n\"], [\"\\n list-style-type: none;\\n columns: 262px auto;\\n column-gap: 16px;\\n padding: 0;\\n margin: 0;\\n\"])));\nvar Item = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n width: 100%;\\n height: 36px;\\n line-height: 36px;\\n display: inline-flex;\\n\\n &:not(:first-child) {\\n border-top: \", \";\\n }\\n\\n & > div {\\n margin: 0;\\n }\\n\\n & > div:nth-child(1) {\\n font-size: 11px;\\n }\\n\\n & > div:nth-child(2) {\\n margin-left: auto;\\n font-family: \", \";\\n font-weight: 600;\\n font-size: 12px;\\n color: \", \";\\n }\\n\"], [\"\\n width: 100%;\\n height: 36px;\\n line-height: 36px;\\n display: inline-flex;\\n\\n &:not(:first-child) {\\n border-top: \", \";\\n }\\n\\n & > div {\\n margin: 0;\\n }\\n\\n & > div:nth-child(1) {\\n font-size: 11px;\\n }\\n\\n & > div:nth-child(2) {\\n margin-left: auto;\\n font-family: \", \";\\n font-weight: 600;\\n font-size: 12px;\\n color: \", \";\\n }\\n\"])), function (_a) {\n var theme = _a.theme;\n return \"1px solid \".concat(theme.dialog.borderFaded);\n}, FONT_FAMILY.MONOSPACE, function (_a) {\n var theme = _a.theme;\n return theme.shortcut.table.sequence;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;\n\nexport { Annotation, DialogBody, DialogContent, DialogHeading, Item, Mask, Table, Wrapper };\n//# sourceMappingURL=styles.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgHelp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32 56c13.255 0 24-10.745 24-24S45.255 8 32 8 8 18.745 8 32s10.745 24 24 24zm5.922-24.424C39.714 30.084 41 28.172 41 25.495 41 21.288 37.455 18 32.35 18 27.17 18 23 20.792 23 26.145h5.026c0-2.485 1.675-3.824 4.13-3.824 2.454 0 3.78 1.53 3.78 3.212 0 1.224-.78 2.104-1.52 2.754-.397.356-.815.682-1.232 1.008-1.508 1.179-3.02 2.36-3.6 4.996-.205.974-.2 2.244-.196 3.29l.002.419h4.83v-1.07c0-2.434 1.207-3.38 2.81-4.64.286-.224.585-.46.892-.714zM29.318 46h5v-5h-5v5z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgHelp as default };\n//# sourceMappingURL=help.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport { useRef, useState, useCallback, useEffect } from 'react';\nimport { useTransition } from '@react-spring/web';\nimport { Wrapper, Mask, DialogContent, DialogHeading, DialogBody, Table, Item, Annotation } from './styles.es.js';\nimport { IconButton } from '../Button/Button.es.js';\nimport '../Button/NextPlayableButton.es.js';\nimport SvgHelp from '../../assets/icons/help.es.js';\nimport SvgClose from '../../assets/icons/close.es.js';\nimport 'styled-components';\nimport '../Dialog/index.es.js';\nimport 'react-dom';\nimport '@popperjs/core';\nimport '../../styles/stackOrder.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../styles/index.es.js';\nimport '../NextPlayable/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/play.es.js';\nimport '../../assets/icons/next_episode.es.js';\n\nvar VIDEO_SHORTCUTS = [\n {\n title: '再生 / 一時停止',\n description: 'Space',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '10秒戻る',\n description: '←',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '10秒進む',\n description: '→',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '30秒戻る',\n description: 'Shift + ←',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '30秒進む',\n description: 'Shift + →',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '音量を下げる',\n description: '↓',\n },\n {\n title: '音量を上げる',\n description: '↑',\n },\n {\n title: '再生速度を減少',\n description: '< (Shift+,)',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '再生速度を増加',\n description: '> (Shift+.)',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: 'フルスクリーン / 解除',\n description: 'f',\n },\n {\n title: 'フルスクリーンを解除',\n description: 'Esc',\n },\n {\n title: 'ミュート / ミュート解除',\n description: 'm',\n },\n {\n title: 'ピクチャーインピクチャー',\n description: 'p',\n },\n {\n title: '次のエピソードへ移動',\n description: 'N (Shift+n)',\n disable: function (_a) {\n var isRealTime = _a.isRealTime;\n return isRealTime;\n },\n },\n {\n title: '前のフレーム(一時停止中)',\n description: ',',\n disable: function (_a) {\n var isRealTime = _a.isRealTime, canRetrieveFrameRate = _a.canRetrieveFrameRate;\n return isRealTime || !canRetrieveFrameRate;\n },\n },\n {\n title: '次のフレーム(一時停止中)',\n description: '.',\n disable: function (_a) {\n var isRealTime = _a.isRealTime, canRetrieveFrameRate = _a.canRetrieveFrameRate;\n return isRealTime || !canRetrieveFrameRate;\n },\n },\n {\n title: 'ショートカットを表示',\n description: '? (Shift+/)',\n },\n];\nvar ShortcutButton = function (_a) {\n var iconSize = _a.iconSize, show = _a.show, toggleShortcutTable = _a.toggleShortcutTable, shortcutItems = _a.shortcutItems;\n var buttonRef = useRef(null);\n var dialogRef = useRef(null);\n var transitions = useTransition(show, {\n from: { opacity: 0 },\n enter: { opacity: 1 },\n leave: { opacity: 0 },\n config: { duration: 150 },\n });\n // ショートカットキーリストを2つのカラムに等分する\n // リストのアイテム数が奇数の場合、1つ目のカラムの要素数が一つ多くなるようにする\n var columns = [[], []];\n shortcutItems.forEach(function (item, index) {\n if (index < Math.ceil(shortcutItems.length / 2)) {\n columns[0].push(item);\n }\n else {\n columns[1].push(item);\n }\n });\n return (jsxs(Fragment, { children: [jsx(IconButton, __assign({ onClick: toggleShortcutTable, isActive: show, iconSize: iconSize, ref: buttonRef, title: \"\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u30B7\\u30E7\\u30FC\\u30C8\\u30AB\\u30C3\\u30C8\" }, { children: jsx(SvgHelp, {}) })), transitions(function (styles, item) {\n return item && (jsxs(Wrapper, __assign({ style: styles }, { children: [jsx(Mask, { onClick: toggleShortcutTable }), jsxs(DialogContent, __assign({ ref: dialogRef }, { children: [jsxs(DialogHeading, { children: [jsx(IconButton, __assign({ onClick: toggleShortcutTable, iconSize: \"32\" }, { children: jsx(SvgClose, {}) })), jsx(\"span\", { children: \"\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u30B7\\u30E7\\u30FC\\u30C8\\u30AB\\u30C3\\u30C8\" })] }), jsxs(DialogBody, { children: [jsx(Table, { children: columns.map(function (column, index) { return (jsx(\"div\", { children: column.map(function (shortcut) { return (jsxs(Item, { children: [jsx(\"div\", { children: shortcut.title }), jsx(\"div\", { children: shortcut.description })] }, \"shortcut-\".concat(shortcut.title))); }) }, index)); }) }), jsx(Annotation, { children: \"\\u203B \\u52D5\\u753B\\u306E\\u7A2E\\u985E\\u3084\\u74B0\\u5883\\u306B\\u3088\\u308A\\u5229\\u7528\\u3067\\u304D\\u308B\\u6A5F\\u80FD\\u306F\\u7570\\u306A\\u308A\\u307E\\u3059\\u3002\" })] })] }))] })));\n })] }));\n};\nfunction ShortcutButtonContainer(_a) {\n var player = _a.player, iconSize = _a.iconSize, onDialogOpen = _a.onDialogOpen;\n var _b = useState(false), showShortcutTable = _b[0], setShowShortcutTable = _b[1];\n var toggleShortcutTable = useCallback(function (show) {\n return setShowShortcutTable(function (currentState) {\n var _a;\n var newState = typeof show === 'boolean' ? show : !currentState;\n onDialogOpen(newState);\n if (!newState)\n (_a = player.control.getContainerElement()) === null || _a === void 0 ? void 0 : _a.focus(); // ShortcutTableを閉じたらplayerWrapperにfocusを戻す\n return newState;\n });\n }, [onDialogOpen, player]);\n var keyboardEventHandler = useCallback(function (e) {\n var key = e.key;\n if (key === '?') {\n toggleShortcutTable();\n }\n else if (key === 'Escape') {\n if (showShortcutTable)\n toggleShortcutTable(false);\n }\n }, [showShortcutTable, toggleShortcutTable]);\n useEffect(function () {\n player.control.waitForAttach().then(function () {\n var _a;\n (_a = player.control\n .getContainerElement()) === null || _a === void 0 ? void 0 : _a.addEventListener('keyup', keyboardEventHandler);\n });\n return function () {\n player.control.waitForAttach().then(function () {\n var _a;\n (_a = player.control\n .getContainerElement()) === null || _a === void 0 ? void 0 : _a.removeEventListener('keyup', keyboardEventHandler);\n });\n };\n }, [keyboardEventHandler, player]);\n var filteredShortcutItems = VIDEO_SHORTCUTS.filter(function (item) {\n var _a;\n if (typeof item.disable === 'function') {\n return !item.disable({\n isRealTime: !!player.getIsRealTime(),\n canRetrieveFrameRate: ((_a = player.getFrameRate()) !== null && _a !== void 0 ? _a : -1) > 0,\n });\n }\n return true;\n });\n return (jsx(ShortcutButton, { iconSize: iconSize, show: showShortcutTable, toggleShortcutTable: toggleShortcutTable, shortcutItems: filteredShortcutItems }));\n}\n\nexport { ShortcutButton, ShortcutButtonContainer };\n//# sourceMappingURL=index.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { SCENE_SEARCH_CONST, Popup, MobilePopup, MobileSceneSearch, NO_IMAGE, Container, Belt, Scene, SceneImage, MainItem, MainItemText } from './styles.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport '../../styles/index.es.js';\nimport 'react';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar getScene = function (src, imgSize, key) {\n if (key === void 0) { key = 0; }\n return (jsx(Scene, { children: jsx(SceneImage, __assign({ imgSrc: src }, imgSize)) }, key));\n};\nvar getMainItem = function (mainImg, mainImgSize, mainText) { return (jsxs(MainItem, { children: [getScene(mainImg, mainImgSize), jsx(MainItemText, { children: mainText })] })); };\nvar SceneSearch = function (_a) {\n var mainText = _a.mainText, mainImg = _a.mainImg, leftImgList = _a.leftImgList, rightImgList = _a.rightImgList, progress = _a.progress, isPopup = _a.isPopup, isVisible = _a.isVisible;\n var isMobile = useContainerSize('MOBILE');\n if (!mainImg || !mainText) {\n return null;\n }\n var mainImgSize = SCENE_SEARCH_CONST.mainImgSize, subImgSize = SCENE_SEARCH_CONST.subImgSize;\n if (isPopup) {\n return (jsx(Popup, __assign({ style: {\n left: \"\".concat(progress, \"%\"),\n transform: \"translateX(-\".concat(progress, \"%)\"),\n bottom: isMobile ? '12px' : '14px',\n } }, { children: isMobile ? (jsx(MobilePopup, { children: mainText })) : (getMainItem(mainImg, mainImgSize, mainText)) })));\n }\n if (isMobile) {\n return (jsx(MobileSceneSearch, { style: mainImg === NO_IMAGE\n ? {\n backgroundColor: 'black',\n }\n : { backgroundImage: \"url(\".concat(mainImg, \")\") }, show: !!isVisible }));\n }\n if (!leftImgList || !rightImgList) {\n return null;\n }\n return (jsxs(Container, __assign({ show: !!isVisible }, { children: [jsx(Belt.Left, { children: leftImgList.map(function (imgs, index) { return getScene(imgs, subImgSize, index); }) }), jsx(Belt.Right, { children: rightImgList.map(function (imgs, index) { return getScene(imgs, subImgSize, index); }) }), jsx(Belt.Center, { children: getMainItem(mainImg, mainImgSize, mainText) })] })));\n};\n\nexport { SceneSearch as default };\n//# sourceMappingURL=index.es.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useState, useEffect, useMemo } from 'react';\nimport { PreparedStatus } from '@u-next/ims-parser';\nimport { getTimeString } from '../../utils/index.es.js';\nimport SceneSearch from './index.es.js';\nimport '../../tslib.es6-3868aa2e.js';\nimport './styles.es.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport '../../styles/index.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nfunction SceneSearchContainer(_a) {\n var player = _a.player, sceneSearcher = _a.sceneSearcher;\n var _b = useState(0), seekTime = _b[0], setSeekTime = _b[1];\n var _c = useState(false), showSceneSearch = _c[0], setShowSceneSearch = _c[1];\n var seekRange = player.getSeekRange();\n var duration = seekRange && seekRange.end - seekRange.start > 0\n ? seekRange.end - seekRange.start\n : undefined;\n useEffect(function () {\n var handleOnSceneSearch = function (seekTime) {\n setShowSceneSearch(true);\n setSeekTime(seekTime);\n };\n var handleOnSceneSearchEnd = function () {\n setShowSceneSearch(false);\n };\n sceneSearcher.onSceneSearch(handleOnSceneSearch);\n sceneSearcher.onSceneSearchEnd(handleOnSceneSearchEnd);\n return function () {\n sceneSearcher.offSceneSearch(handleOnSceneSearch);\n sceneSearcher.offSceneSearchEnd(handleOnSceneSearchEnd);\n };\n }, [sceneSearcher]);\n var _d = useMemo(function () {\n return sceneSearcher.getResolvedScene(seekTime);\n }, [seekTime, sceneSearcher]), mainImg = _d.mainImg, leftImgList = _d.leftImgList, rightImgList = _d.rightImgList, seekedTime = _d.seekedTime, imsStatus = _d.imsStatus;\n return imsStatus === PreparedStatus.OK ? (jsx(SceneSearch, { mainText: getTimeString(Math.min(duration !== null && duration !== void 0 ? duration : 0, Math.max(seekedTime, 0))), mainImg: mainImg, leftImgList: leftImgList, rightImgList: rightImgList, isVisible: showSceneSearch })) : null;\n}\n\nexport { SceneSearchContainer as default };\n//# sourceMappingURL=container.es.js.map\n","import { useState, useRef, useCallback } from 'react';\n\n// This hooks is mainly for handling the dynamic seek range which happens on timeshifted live playback.\n// Here is an explanation about how seekRange changes during timeshifted live: https://github.com/u-next/cosmo/pull/2507\nfunction useDynamicSeekRange(_a) {\n var isDynamic = _a.isDynamic, isSafariAndLiveOnAir = _a.isSafariAndLiveOnAir;\n var _b = useState(), dynamicSeekRange = _b[0], setDynamicSeekRange = _b[1];\n var seekRangeInitialized = useRef(false);\n var lastCheckedTimeRef = useRef();\n var updateDynamicSeekRange = useCallback(function (_a) {\n var start = _a.start, end = _a.end;\n // Avoid setting \"end\" to \"infinity\", which Safari sometimes returns\n if (typeof start === 'number' &&\n typeof end === 'number' &&\n isFinite(end)) {\n if (!isDynamic) {\n setDynamicSeekRange(function () {\n if (!seekRangeInitialized.current)\n seekRangeInitialized.current = true;\n return { start: start, end: end };\n });\n }\n else {\n // reset seek range if start/end are both 0, usually it shouldn't happen when live is ongoing, but we observed\n // that sometimes we'll get\n // \"weird seek range\" > 0 > \"normal seek range 1\" > \"normal seek range 2\" ...\n // right after swtiching to catch-up live, so this reset could help us to avoid being affected by \"weird seek range\"\n if (start === 0 && end === 0) {\n seekRangeInitialized.current = false;\n return;\n }\n setDynamicSeekRange(function (cur) {\n var newStart;\n var newEnd;\n if (!cur || !seekRangeInitialized.current) {\n newStart = start;\n newEnd = end;\n }\n else {\n // \"start\" of seek range should be fixed according to our current service spec.\n // But Shaka player increases \"start\" for 5 seconds until the next manifest file is fetched.\n // Thus, while the live is ongoing, the duration (= end - start) does not change for 5 seconds, though it should change.\n // That is why we keep the lowest start value here and let the duration increase continuously.\n newStart = Math.min(start, cur.start);\n if (isSafariAndLiveOnAir &&\n end > 0 &&\n // force update end time if the upcoming one is 10 seconds later than our internal counter, this solves the issue\n // that sometimes end time starts counting up from 0\n end - cur.end < 10 &&\n typeof lastCheckedTimeRef.current === 'number') {\n var timeDiff = window.performance.now() - lastCheckedTimeRef.current;\n // \"end\" of seek range should be increased while the live is ongoing.\n // But Safari player does not increase \"start\" for 5 seconds until the next manifest file is fetched.\n // Thus, while the live is ongoing, the rest time till its live edge (= end - currentTime) does not change for 5 seconds, though it should change.\n // That is why we count up `seekRange.end` here instead of using getSeekRange\n newEnd = cur.end + timeDiff / 1000;\n }\n else {\n newEnd = end;\n }\n }\n lastCheckedTimeRef.current = window.performance.now();\n if (!seekRangeInitialized.current)\n seekRangeInitialized.current = true;\n return { start: newStart, end: newEnd };\n });\n }\n }\n }, [isDynamic, isSafariAndLiveOnAir]);\n return {\n seekRange: dynamicSeekRange,\n updateSeekRange: updateDynamicSeekRange,\n };\n}\n\nexport { useDynamicSeekRange as default };\n//# sourceMappingURL=useDynamicSeekRange.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled, { css } from 'styled-components';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport { PLAYER_UI_TRANSITION, FONT_FAMILY } from '../../styles/index.es.js';\n\nvar RangeInputStyleReset = css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\\n appearance: none;\\n -webkit-tap-highlight-color: transparent;\\n width: 100%; /* Specific width is required for Firefox. */\\n height: 100%;\\n background: transparent; /* Otherwise white in Chrome */\\n margin: 0;\\n\\n &::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n }\\n\\n &::-moz-range-thumb {\\n border: none;\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &::-ms-track {\\n width: 100%;\\n cursor: pointer;\\n\\n /* Hides the slider so custom styles can be added */\\n background: transparent;\\n border-color: transparent;\\n color: transparent;\\n }\\n\"], [\"\\n position: absolute;\\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\\n appearance: none;\\n -webkit-tap-highlight-color: transparent;\\n width: 100%; /* Specific width is required for Firefox. */\\n height: 100%;\\n background: transparent; /* Otherwise white in Chrome */\\n margin: 0;\\n\\n &::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n }\\n\\n &::-moz-range-thumb {\\n border: none;\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &::-ms-track {\\n width: 100%;\\n cursor: pointer;\\n\\n /* Hides the slider so custom styles can be added */\\n background: transparent;\\n border-color: transparent;\\n color: transparent;\\n }\\n\"])));\nvar ThumbStyle = css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n border-radius: 50%;\\n background: \", \";\\n cursor: pointer;\\n\"], [\"\\n width: \", \";\\n height: \", \";\\n border-radius: 50%;\\n background: \", \";\\n cursor: pointer;\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '16px' : '24px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '16px' : '24px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.progress.key;\n});\nvar TrackStyle = css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: 100%;\\n height: 4px;\\n cursor: pointer;\\n\"], [\"\\n width: 100%;\\n height: 4px;\\n cursor: pointer;\\n\"])));\nvar RangeInputStyle = css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n &::-webkit-slider-thumb {\\n \", \"\\n\\n margin-top: \", \";\\n }\\n\\n &::-webkit-slider-runnable-track {\\n \", \"\\n }\\n\\n &::-moz-range-thumb {\\n \", \"\\n }\\n\\n &::-moz-range-track {\\n \", \"\\n }\\n\\n &::-ms-thumb {\\n \", \"\\n }\\n\\n &::-ms-track {\\n \", \"\\n }\\n\"], [\"\\n &::-webkit-slider-thumb {\\n \", \"\\n\\n margin-top: \", \";\\n }\\n\\n &::-webkit-slider-runnable-track {\\n \", \"\\n }\\n\\n &::-moz-range-thumb {\\n \", \"\\n }\\n\\n &::-moz-range-track {\\n \", \"\\n }\\n\\n &::-ms-thumb {\\n \", \"\\n }\\n\\n &::-ms-track {\\n \", \"\\n }\\n\"])), ThumbStyle, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '-6px' : '-10px');\n}, TrackStyle, ThumbStyle, TrackStyle, ThumbStyle, TrackStyle);\nvar PseudProgressBarWrapper = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: absolute;\\n bottom: -10px;\\n height: 24px;\\n width: 100%;\\n z-index: \", \";\\n \", \";\\n\"], [\"\\n position: absolute;\\n bottom: -10px;\\n height: 24px;\\n width: 100%;\\n z-index: \", \";\\n \", \";\\n\"])), getZIndex('PSEUD_PROGRESS_BAR'), PLAYER_UI_TRANSITION);\nvar FillTrack = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: absolute;\\n height: 100%;\\n border-radius: \", \";\\n background: \", \";\\n flex-shrink: 0;\\n\"], [\"\\n position: absolute;\\n height: 100%;\\n border-radius: \", \";\\n background: \", \";\\n flex-shrink: 0;\\n\"])), function (_a) {\n var mode = _a.mode;\n return (mode === 'inline' ? '0' : '2px 0 0 2px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.progress.key;\n});\nvar BufferedTrack = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n height: 100%;\\n border-radius: 2px;\\n background: \", \";\\n\"], [\"\\n height: 100%;\\n border-radius: 2px;\\n background: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.progress.base;\n});\nvar Step = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n height: 100%;\\n background-color: \", \";\\n\"], [\"\\n height: 100%;\\n background-color: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.progress.step;\n});\nvar ProgressBarInput = styled.input(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n cursor: pointer;\\n\"], [\"\\n \", \";\\n \", \";\\n cursor: pointer;\\n\"])), RangeInputStyleReset, RangeInputStyle);\nvar TooltipContainer = styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n \", \";\\n\"])), PLAYER_UI_TRANSITION);\nvar Duration = styled.span(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.text.faded;\n});\nvar TimeDisplay = styled.div(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n position: absolute;\\n transform: translateY(-100%);\\n font-family: \", \";\\n font-weight: 600;\\n font-size: \", \";\\n letter-spacing: 0.02em;\\n top: \", \";\\n \", \"\\n\"], [\"\\n position: absolute;\\n transform: translateY(-100%);\\n font-family: \", \";\\n font-weight: 600;\\n font-size: \", \";\\n letter-spacing: 0.02em;\\n top: \", \";\\n \", \"\\n\"])), FONT_FAMILY.MONOSPACE, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '11px' : '14px');\n}, function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '2px' : '-6px');\n}, function (_a) {\n var mode = _a.mode, isMobile = _a.isMobile;\n if (mode === 'default') {\n return css(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n right: 0;\\n \"], [\"\\n right: 0;\\n \"])));\n }\n if (mode === 'inline' && isMobile) {\n return css(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n left: 8px;\\n \"], [\"\\n left: 8px;\\n \"])));\n }\n if (mode === 'inline' && !isMobile) {\n return css(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n right: 16px;\\n \"], [\"\\n right: 16px;\\n \"])));\n }\n});\nvar RangeInputWrapper = styled.div(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n position: relative;\\n height: 24px;\\n touch-action: none;\\n margin: 0 \", \";\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n height: 24px;\\n touch-action: none;\\n margin: 0 \", \";\\n\\n \", \"\\n\"])), function (_a) {\n var mode = _a.mode;\n return (mode === 'inline' ? '-16px' : '0');\n}, function (_a) {\n var isMobile = _a.isMobile, mode = _a.mode;\n return isMobile && mode === 'inline'\n ? css(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n position: absolute;\\n bottom: -10px;\\n width: 100%;\\n \"], [\"\\n position: absolute;\\n bottom: -10px;\\n width: 100%;\\n \"]))) : '';\n});\nvar Track = styled.div(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\\n position: absolute;\\n top: 50%;\\n display: flex;\\n justify-content: flex-start;\\n transform: translateY(-50%);\\n width: 100%;\\n height: 4px;\\n border-radius: \", \";\\n background: \", \";\\n\"], [\"\\n position: absolute;\\n top: 50%;\\n display: flex;\\n justify-content: flex-start;\\n transform: translateY(-50%);\\n width: 100%;\\n height: 4px;\\n border-radius: \", \";\\n background: \", \";\\n\"])), function (_a) {\n var mode = _a.mode;\n return (mode === 'inline' ? '0' : '2px');\n}, function (_a) {\n var theme = _a.theme;\n return theme.progress.base;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18;\n\nexport { BufferedTrack, Duration, FillTrack, ProgressBarInput, PseudProgressBarWrapper, RangeInputWrapper, Step, TimeDisplay, TooltipContainer, Track };\n//# sourceMappingURL=styles.es.js.map\n","import { b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport throttle from 'just-throttle';\nimport { RangeInputWrapper, ProgressBarInput, TimeDisplay, Duration, TooltipContainer, PseudProgressBarWrapper, Track, FillTrack, BufferedTrack, Step } from './styles.es.js';\nimport { getTimeString } from '../../utils/index.es.js';\nimport useContainerSize from '../../hooks/useContainerSize.es.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport '../../styles/index.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\n\nvar getPointerValue = function (e) {\n var _a, _b, _c;\n var offsetX = e.nativeEvent.offsetX > 0 ? e.nativeEvent.offsetX : 0;\n var ratio = Math.min(offsetX / e.currentTarget.clientWidth, 1);\n var hoverValue = ratio *\n (parseInt((_a = e.currentTarget.getAttribute('max')) !== null && _a !== void 0 ? _a : '0', 10) -\n parseInt((_b = e.currentTarget.getAttribute('min')) !== null && _b !== void 0 ? _b : '0', 10)) +\n parseInt((_c = e.currentTarget.getAttribute('min')) !== null && _c !== void 0 ? _c : '0', 10);\n return hoverValue;\n};\nvar CHAPTER_LIST_ID = 'chapter-list';\nvar ProgressBar = function (_a) {\n var value = _a.value, buffered = _a.buffered, max = _a.max, min = _a.min, timeDisplayText = _a.timeDisplayText, onHover = _a.onHover, onDrag = _a.onDrag, onDragStart = _a.onDragStart, onDragEnd = _a.onDragEnd, tooltipComponent = _a.tooltipComponent, mode = _a.mode, chaptersInfo = _a.chaptersInfo, props = __rest(_a, [\"value\", \"buffered\", \"max\", \"min\", \"timeDisplayText\", \"onHover\", \"onDrag\", \"onDragStart\", \"onDragEnd\", \"tooltipComponent\", \"mode\", \"chaptersInfo\"]);\n var isMobile = useContainerSize('MOBILE');\n var _b = useState(value), currentValue = _b[0], setCurrentValue = _b[1];\n var _c = useState(min), tooltipValue = _c[0], setTooltipValue = _c[1];\n var _d = useState('IDLE'), pointerStatus = _d[0], setPointerStatus = _d[1];\n useEffect(function () {\n // make sure current value will not be larger than max\n setCurrentValue(Math.min(value, max));\n }, [max, value]);\n var onChangeCallback = useCallback(function (e) {\n setCurrentValue(Number(e.target.value));\n }, []);\n var onPointerMoveThrottled = useMemo(function () {\n var throttled = throttle(function (e) {\n var value = getPointerValue(e);\n switch (pointerStatus) {\n case 'HOVERING':\n setTooltipValue(value);\n onHover(value);\n break;\n case 'DRAGGING':\n setCurrentValue(value);\n onDrag(value);\n break;\n default:\n setPointerStatus('HOVERING');\n setTooltipValue(value);\n }\n }, 16, { leading: true, trailing: false });\n return function (e) {\n e.persist();\n return throttled(e);\n };\n }, [onDrag, onHover, pointerStatus]);\n var onPointerDownCallback = useCallback(function (e) {\n var value = getPointerValue(e);\n setPointerStatus('DRAGGING');\n setCurrentValue(value);\n onDragStart(value);\n }, [onDragStart]);\n var onPointerUpCallback = useCallback(function (e) {\n var value = getPointerValue(e);\n setPointerStatus('IDLE');\n onDrag(value);\n onDragEnd(value);\n }, [onDragEnd, onDrag]);\n var onPointerEnterCallback = useCallback(function () {\n setPointerStatus('HOVERING');\n }, []);\n var onPointerLeaveCallback = useCallback(function () {\n setPointerStatus('IDLE');\n }, []);\n var durationString = getTimeString(max - min);\n var currentTimeString = getTimeString(value - min);\n return (jsxs(RangeInputWrapper, __assign({ mode: mode, isMobile: isMobile }, { children: [jsx(TrackPrime, { mode: mode, buffered: buffered, currentValue: currentValue, max: max, min: min, chaptersInfo: chaptersInfo }), jsx(ProgressBarInput, __assign({ isMobile: isMobile, type: \"range\", value: currentValue, max: max, min: min, onChange: onChangeCallback, onPointerDown: onPointerDownCallback, onPointerUp: onPointerUpCallback, onPointerMove: onPointerMoveThrottled, onPointerEnter: onPointerEnterCallback, onPointerLeave: onPointerLeaveCallback, list: CHAPTER_LIST_ID }, props)), jsx(TimeDisplay, __assign({ mode: mode, isMobile: isMobile }, { children: timeDisplayText !== null && timeDisplayText !== void 0 ? timeDisplayText : (jsxs(Fragment, { children: [currentTimeString, jsx(Duration, { children: \" / \".concat(durationString) })] })) })), jsx(TooltipContainer, __assign({ show: isMobile ? pointerStatus === 'DRAGGING' : pointerStatus === 'HOVERING' }, { children: tooltipComponent({\n progress: ((tooltipValue - min) / (max - min)) * 100,\n }) }))] })));\n};\nvar PseudProgressBar = function (_a) {\n var show = _a.show, buffered = _a.buffered, value = _a.value, max = _a.max, min = _a.min, chaptersInfo = _a.chaptersInfo;\n var stepsProps = useStepsPropsFromChaptersInfo({ chaptersInfo: chaptersInfo, max: max });\n return (jsx(PseudProgressBarWrapper, __assign({ show: show }, { children: jsxs(Track, __assign({ mode: \"inline\" }, { children: [jsx(FillTrack, { mode: \"inline\", style: {\n width: \"\".concat((((value - min) / (max - min)) * 100).toFixed(2), \"%\"),\n } }), jsx(BufferedTrack, { style: {\n width: \"\".concat((((buffered - min) / (max - min)) * 100).toFixed(2), \"%\"),\n } }), stepsProps === null || stepsProps === void 0 ? void 0 : stepsProps.map(function (step, index) { return (jsx(Step, { style: step === null || step === void 0 ? void 0 : step.style }, index)); })] })) })));\n};\nvar TrackPrime = function (_a) {\n var mode = _a.mode, currentValue = _a.currentValue, _b = _a.min, min = _b === void 0 ? 0 : _b, max = _a.max, buffered = _a.buffered, chaptersInfo = _a.chaptersInfo;\n var stepsProps = useStepsPropsFromChaptersInfo({ chaptersInfo: chaptersInfo, max: max });\n return (jsxs(Fragment, { children: [jsxs(Track, __assign({ mode: mode }, { children: [jsx(FillTrack, { mode: mode, style: {\n width: \"\".concat((((currentValue - min) / (max - min)) * 100).toFixed(2), \"%\"),\n } }), jsx(BufferedTrack, { style: {\n width: \"\".concat((((buffered - min) / (max - min)) * 100).toFixed(2), \"%\"),\n } }), stepsProps === null || stepsProps === void 0 ? void 0 : stepsProps.map(function (step, index) { return (jsx(Step, { style: step === null || step === void 0 ? void 0 : step.style }, index)); })] })), chaptersInfo && (jsx(\"datalist\", __assign({ id: CHAPTER_LIST_ID }, { children: chaptersInfo.map(function (chapter) { return (jsx(\"option\", { value: chapter.startTime }, chapter.startTime)); }) })))] }));\n};\nvar useStepsPropsFromChaptersInfo = function (_a) {\n var chaptersInfo = _a.chaptersInfo, max = _a.max;\n return useMemo(function () {\n if (!chaptersInfo) {\n return;\n }\n var stepLeewayMagicNumber = 2;\n var stepsProps = chaptersInfo\n .map(function (chapter, index) {\n if (index === 0) {\n if (chapter.startTime <= stepLeewayMagicNumber) {\n // super random opinon that we should give 2 second leeway\n // to still consider as no before first chapter\n return undefined;\n }\n var width_1 = \"\".concat(((chapter.startTime / max) * 100).toFixed(2), \"%\");\n var style_1 = {\n position: 'absolute',\n left: 0,\n width: width_1,\n };\n return {\n style: style_1,\n };\n }\n var left = \"\".concat(((chaptersInfo[index - 1].endTime / max) * 100).toFixed(2), \"%\");\n var durationBetweenChapter = chapter.startTime - chaptersInfo[index - 1].endTime;\n var width = durationBetweenChapter > 1\n ? // durationBetweenChapter > 1 can represent a big gap, so we use this % instead\n // the specs arent really confirmed yet based on discussion on slack (see https://github.com/u-next/babystar/pull/230)\n // so lets not go too deep into the implementation and let this iterate if necessary\n \"\".concat((((chapter.startTime - chaptersInfo[index - 1].endTime) / max) *\n 100).toFixed(2), \"%\")\n : // durationBetweenChapter === 1 basically means back to back, so we will use the minimum 2px\n '2px';\n var style = {\n position: 'absolute',\n left: left,\n width: width,\n };\n return {\n style: style,\n };\n })\n .filter(function (stepProps) { return stepProps; });\n var lastChapter = chaptersInfo[chaptersInfo.length - 1];\n var lastChapterEndToMaxDuration = max - lastChapter.endTime;\n if (lastChapterEndToMaxDuration > stepLeewayMagicNumber) {\n var left = \"\".concat(((lastChapter.endTime / max) * 100).toFixed(2), \"%\");\n var width = \"\".concat(((lastChapterEndToMaxDuration / max) * 100).toFixed(2), \"%\");\n var style = {\n position: 'absolute',\n left: left,\n width: width,\n };\n stepsProps.push({\n style: style,\n });\n }\n return stepsProps;\n }, [chaptersInfo, max]);\n};\n\nexport { PseudProgressBar, ProgressBar as default };\n//# sourceMappingURL=index.es.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useState, useCallback, useEffect } from 'react';\nimport SceneSearch from '../SceneSearch/index.es.js';\nimport { getTimeString } from '../../utils/index.es.js';\nimport usePlayerOptions from '../../hooks/usePlayerOptions.es.js';\nimport useDynamicSeekRange from '../../hooks/useDynamicSeekRange.es.js';\nimport ProgressBar, { PseudProgressBar } from './index.es.js';\nimport '../../tslib.es6-3868aa2e.js';\nimport '../SceneSearch/styles.es.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport '../../styles/index.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport 'just-throttle';\nimport './styles.es.js';\n\nvar CURRENT_TIME_UPDATE_INTERVAL = 125;\nvar ProgressBarContainer = function (_a) {\n var _b, _c;\n var player = _a.player, sceneSearcher = _a.sceneSearcher, mode = _a.mode, chaptersInfo = _a.chaptersInfo, min = _a.min, max = _a.max, onSeekStart = _a.onSeekStart, onSeekEnd = _a.onSeekEnd, isPseud = _a.isPseud, showPseud = _a.showPseud;\n var playerOptions = usePlayerOptions(player);\n var isTimeshift = playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.isTimeshift;\n var _d = useState(false), isDragging = _d[0], setIsDragging = _d[1];\n var _e = useDynamicSeekRange({\n isSafariAndLiveOnAir: player.getVideoElement().duration === Infinity,\n isDynamic: Boolean((playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.live) && isTimeshift),\n }), seekRange = _e.seekRange, updateSeekRange = _e.updateSeekRange;\n var duration = seekRange && seekRange.end - seekRange.start > 0\n ? seekRange.end - seekRange.start\n : undefined;\n var _f = useState(0), currentTimeFromStart = _f[0], setCurrentTimeFromStart = _f[1];\n var _g = useState(0), bufferedTime = _g[0], setBufferedTime = _g[1];\n var _h = useState(player.getVideoElement().paused), isPaused = _h[0], setIsPaused = _h[1];\n var handlePause = useCallback(function () {\n setIsPaused(true);\n }, []);\n var handlePlay = useCallback(function () {\n setIsPaused(false);\n }, []);\n useEffect(function () {\n player.getVideoElement().addEventListener('pause', handlePause);\n player.getVideoElement().addEventListener('play', handlePlay);\n return function () {\n player.getVideoElement().removeEventListener('pause', handlePause);\n player.getVideoElement().removeEventListener('play', handlePlay);\n };\n }, [handlePlay, handlePause, player]);\n useEffect(function () {\n setCurrentTimeFromStart(player.getCurrentTimeFromStart());\n }, [player]);\n var getBufferedEndTimeFromStart = useCallback(function () {\n var _a;\n var buffered = player.getVideoElement().buffered;\n if (buffered.length) {\n return Math.max(0, buffered.end(0) - ((_a = seekRange === null || seekRange === void 0 ? void 0 : seekRange.start) !== null && _a !== void 0 ? _a : 0));\n }\n return 0;\n }, [player, seekRange === null || seekRange === void 0 ? void 0 : seekRange.start]);\n useEffect(function () {\n var playbackDurationTimer;\n if (!isPaused && !isDragging) {\n playbackDurationTimer = setInterval(function () {\n var _a;\n var _b = ((_a = player.getSeekRange) === null || _a === void 0 ? void 0 : _a.call(player)) || {}, start = _b.start, end = _b.end;\n updateSeekRange({ start: start, end: end });\n setCurrentTimeFromStart(player.getCurrentTimeFromStart());\n setBufferedTime(getBufferedEndTimeFromStart());\n }, CURRENT_TIME_UPDATE_INTERVAL);\n }\n return function () {\n if (playbackDurationTimer) {\n clearInterval(playbackDurationTimer);\n }\n };\n }, [\n getBufferedEndTimeFromStart,\n isDragging,\n isPaused,\n isTimeshift,\n player,\n updateSeekRange,\n ]);\n var remainingTime = player.getRemainingTime();\n var isLiveEdge = player.getIsLiveEdge();\n var remainingTimeText = typeof remainingTime === 'number'\n ? getTimeString(isLiveEdge ? 0 : remainingTime) // Show 0 at \"live edge\"\n : undefined;\n var handleDragStart = useCallback(function () {\n player.getVideoElement().pause();\n setIsDragging(true);\n onSeekStart === null || onSeekStart === void 0 ? void 0 : onSeekStart();\n }, [onSeekStart, player]);\n var handleDragEnd = useCallback(function (value) {\n var _a;\n var seekedTime = sceneSearcher.getResolvedScene(value).seekedTime;\n var videoElement = player.getVideoElement();\n videoElement.currentTime = seekedTime + ((_a = seekRange === null || seekRange === void 0 ? void 0 : seekRange.start) !== null && _a !== void 0 ? _a : 0);\n videoElement.play();\n sceneSearcher.searchEnd();\n setIsDragging(false);\n onSeekEnd === null || onSeekEnd === void 0 ? void 0 : onSeekEnd();\n }, [onSeekEnd, player, sceneSearcher, seekRange === null || seekRange === void 0 ? void 0 : seekRange.start]);\n var handleDrag = useCallback(function (value) {\n player.getVideoElement().pause();\n // To clear the buffered length when the progress bar thumb position is changing\n setBufferedTime(0);\n if (isDragging) {\n sceneSearcher.searchStart(value);\n }\n }, [isDragging, player, sceneSearcher]);\n var _j = useState({\n mainImg: '',\n seekedTime: 0,\n }), hoverSceneSearchResult = _j[0], setHoverSceneSearchResult = _j[1];\n var handleHover = useCallback(function (value) {\n var result = sceneSearcher.getResolvedScene(value);\n setHoverSceneSearchResult({\n mainImg: result.mainImg,\n seekedTime: result.seekedTime,\n });\n }, [sceneSearcher]);\n return isPseud ? (jsx(PseudProgressBar, { show: !!showPseud, max: (_b = max !== null && max !== void 0 ? max : duration) !== null && _b !== void 0 ? _b : 0, min: min !== null && min !== void 0 ? min : 0, value: currentTimeFromStart, buffered: bufferedTime, chaptersInfo: chaptersInfo })) : (jsx(ProgressBar, { mode: mode !== null && mode !== void 0 ? mode : 'default', min: min !== null && min !== void 0 ? min : 0, max: (_c = max !== null && max !== void 0 ? max : duration) !== null && _c !== void 0 ? _c : 0, value: currentTimeFromStart, timeDisplayText: isTimeshift ? remainingTimeText : undefined, step: 0.01, buffered: bufferedTime, onHover: handleHover, onDrag: handleDrag, onDragStart: handleDragStart, onDragEnd: handleDragEnd, tooltipComponent: function (_a) {\n var _b;\n var progress = _a.progress;\n return (jsx(SceneSearch, { mainText: getTimeString(Math.min(duration !== null && duration !== void 0 ? duration : 0, Math.max((_b = hoverSceneSearchResult.seekedTime) !== null && _b !== void 0 ? _b : 0, 0))), mainImg: hoverSceneSearchResult.mainImg, progress: progress, isPopup: true }));\n }, chaptersInfo: chaptersInfo }));\n};\n\nexport { ProgressBarContainer as default };\n//# sourceMappingURL=container.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled from 'styled-components';\nimport { PLAYER_UI_TRANSITION } from '../../styles/index.es.js';\n\nvar Overlay = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n background-color: \", \";\\n\\n \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n background-color: \", \";\\n\\n \", \";\\n\"])), function (_a) {\n var theme = _a.theme;\n return theme.overlay;\n}, PLAYER_UI_TRANSITION);\nvar GradationTop = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n height: 160px;\\n background-image: linear-gradient(\\n 180deg,\\n rgba(34, 34, 44, 0.2) 0%,\\n rgba(34, 34, 44, 0.0885417) 35.94%,\\n rgba(34, 34, 44, 0) 100%\\n );\\n\"], [\"\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n height: 160px;\\n background-image: linear-gradient(\\n 180deg,\\n rgba(34, 34, 44, 0.2) 0%,\\n rgba(34, 34, 44, 0.0885417) 35.94%,\\n rgba(34, 34, 44, 0) 100%\\n );\\n\"])));\nvar GradationBottom = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n height: 240px;\\n background-image: linear-gradient(\\n 180deg,\\n rgba(34, 34, 44, 0) 0%,\\n rgba(34, 34, 44, 0.105208) 70.31%,\\n rgba(34, 34, 44, 0.2) 100%\\n );\\n\"], [\"\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n height: 240px;\\n background-image: linear-gradient(\\n 180deg,\\n rgba(34, 34, 44, 0) 0%,\\n rgba(34, 34, 44, 0.105208) 70.31%,\\n rgba(34, 34, 44, 0.2) 100%\\n );\\n\"])));\nvar templateObject_1, templateObject_2, templateObject_3;\n\nexport { GradationBottom, GradationTop, Overlay };\n//# sourceMappingURL=styles.es.js.map\n","import { _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { Overlay, GradationTop, GradationBottom } from './styles.es.js';\nimport 'styled-components';\nimport '../../styles/index.es.js';\n\nvar PlayerOverlay = function (_a) {\n var show = _a.show;\n return (jsxs(Overlay, __assign({ show: show }, { children: [jsx(GradationTop, {}), jsx(GradationBottom, {})] })));\n};\n\nexport { PlayerOverlay as default };\n//# sourceMappingURL=index.es.js.map\n","import { a as __makeTemplateObject, b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport styled from 'styled-components';\nimport { useRef } from 'react';\nimport { PLAYER_UI_TRANSITION } from '../../styles/index.es.js';\n\nvar Container = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n height: 100%;\\n \", \";\\n\"], [\"\\n height: 100%;\\n \", \";\\n\"])), PLAYER_UI_TRANSITION);\nvar PlayPauseClickArea = function (_a) {\n var player = _a.player, props = __rest(_a, [\"player\"]);\n var containerRef = useRef(null);\n return (jsx(Container, __assign({}, props, { onClick: function () {\n var _a;\n // resume if video was paused since even LIVE content got paused accidentaly.\n if (!player.getIsRealTime() || player.getVideoElement().paused) {\n (_a = player.control\n .getContainerElement()) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new KeyboardEvent('keyup', { key: ' ' }));\n }\n }, ref: containerRef })));\n};\nvar templateObject_1;\n\nexport { PlayPauseClickArea as default };\n//# sourceMappingURL=index.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgPInP(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 28h17v12H29V28z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8 18a4 4 0 014-4h40a4 4 0 014 4v28a4 4 0 01-4 4H12a4 4 0 01-4-4V18zm5 27V19h38v26H13z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgPInP as default };\n//# sourceMappingURL=p_in_p.es.js.map\n","import { b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { IconButton } from '../Button/Button.es.js';\nimport 'react';\nimport '../Button/NextPlayableButton.es.js';\nimport usePinP from '../../hooks/usePinP.es.js';\nimport SvgPInP from '../../assets/icons/p_in_p.es.js';\nimport 'styled-components';\nimport '../NextPlayable/index.es.js';\nimport '../../styles/index.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/play.es.js';\nimport '../../assets/icons/close.es.js';\nimport '../../assets/icons/next_episode.es.js';\n\nvar PinPButtonContainer = function (_a) {\n var player = _a.player, iconSize = _a.iconSize, props = __rest(_a, [\"player\", \"iconSize\"]);\n var _b = usePinP(player.getVideoElement()), isPinPEnabled = _b.isPinPEnabled, togglePinP = _b.togglePinP;\n return isPinPEnabled ? (jsx(IconButton, __assign({ onClick: function () { return togglePinP(); }, iconSize: iconSize, title: \"\\u30D4\\u30AF\\u30C1\\u30E3\\u30FC\\u30A4\\u30F3\\u30D4\\u30AF\\u30C1\\u30E3\\u30FC\" }, props, { children: jsx(SvgPInP, {}) }))) : (jsx(Fragment, {}));\n};\n\nexport { PinPButtonContainer };\n//# sourceMappingURL=index.es.js.map\n","import { a as __makeTemplateObject } from '../../tslib.es6-3868aa2e.js';\nimport styled from 'styled-components';\nimport { getZIndex } from '../../styles/stackOrder.es.js';\nimport { PLAYER_UI_TRANSITION } from '../../styles/index.es.js';\n\nvar UIContainer = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n \", \";\\n right: 0;\\n left: 0;\\n z-index: \", \";\\n\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n\\n \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n \", \";\\n right: 0;\\n left: 0;\\n z-index: \", \";\\n\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n\\n \", \";\\n\"])), function (_a) {\n var onlyHeader = _a.onlyHeader;\n return !onlyHeader && 'bottom: 0';\n}, getZIndex('CONTROL_UI'), PLAYER_UI_TRANSITION);\n// Header\nvar HeaderContainer = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n gap: 12px;\\n padding: \", \";\\n > button {\\n flex-shrink: 0;\\n }\\n \", \";\\n \", \"; // \\u89AA\\u8981\\u7D20\\u306Etransition(0.2s)\\u4E2D\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u306E\\u3092\\u9632\\u3050\\u305F\\u3081\\u3001\\u3057\\u3070\\u3089\\u304F\\u5F85\\u3064\\n\"], [\"\\n display: flex;\\n align-items: center;\\n gap: 12px;\\n padding: \", \";\\n > button {\\n flex-shrink: 0;\\n }\\n \", \";\\n \", \"; // \\u89AA\\u8981\\u7D20\\u306Etransition(0.2s)\\u4E2D\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u306E\\u3092\\u9632\\u3050\\u305F\\u3081\\u3001\\u3057\\u3070\\u3089\\u304F\\u5F85\\u3064\\n\"])), function (_a) {\n var mode = _a.mode, isMobile = _a.isMobile;\n if (mode === 'inline' && isMobile) {\n return '10px';\n }\n if (mode === 'default' && isMobile) {\n return '24px 32px';\n }\n return '32px';\n}, PLAYER_UI_TRANSITION, function (_a) {\n var show = _a.show;\n return show &&\n 'transition-delay: 0.5s;';\n});\nvar TitleContainer = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n min-width: 0;\\n > * {\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n }\\n\"], [\"\\n min-width: 0;\\n > * {\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n }\\n\"])));\nvar Logo = styled.img(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n height: \", \";\\n width: auto;\\n\"], [\"\\n height: \", \";\\n width: auto;\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '32px' : '40px');\n});\nvar Title = styled.h2(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin: 0;\\n font-size: \", \";\\n font-weight: 600;\\n line-height: 1.4;\\n\"], [\"\\n margin: 0;\\n font-size: \", \";\\n font-weight: 600;\\n line-height: 1.4;\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '18px' : '24px');\n});\nvar SubTitle = styled.h3(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n margin: 4px 0 0;\\n font-size: \", \";\\n font-weight: 500;\\n line-height: 1.4;\\n\"], [\"\\n margin: 4px 0 0;\\n font-size: \", \";\\n font-weight: 500;\\n line-height: 1.4;\\n\"])), function (_a) {\n var isMobile = _a.isMobile;\n return (isMobile ? '13px' : '16px');\n});\nvar RightPane = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n display: flex;\\n gap: 12px;\\n margin-left: auto;\\n\"], [\"\\n display: flex;\\n gap: 12px;\\n margin-left: auto;\\n\"])));\nvar Header = {\n Container: HeaderContainer,\n TitleContainer: TitleContainer,\n Title: Title,\n SubTitle: SubTitle,\n RightPane: RightPane,\n Logo: Logo,\n};\n// Footer\nvar FooterContainer = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n padding: 0 \", \";\\n padding-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n padding: 0 \", \";\\n padding-bottom: \", \";\\n\"])), function (_a) {\n var mode = _a.mode;\n return (mode === 'inline' ? '16px' : '32px');\n}, function (_a) {\n var mode = _a.mode, isMobile = _a.isMobile;\n return mode === 'inline' || isMobile ? '16px' : '32px';\n});\nvar Upper = styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: flex;\\n gap: 16px;\\n align-items: flex-end;\\n\"], [\"\\n display: flex;\\n gap: 16px;\\n align-items: flex-end;\\n\"])));\nvar UpperLeft = styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n display: inline-flex;\\n gap: 16px;\\n align-items: center;\\n\"], [\"\\n display: inline-flex;\\n gap: 16px;\\n align-items: center;\\n\"])));\nvar Lower = styled.div(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n display: flex;\\n gap: 16px;\\n \", \";\\n \", \"; // \\u89AA\\u8981\\u7D20\\u306Etransition(0.2s)\\u4E2D\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u306E\\u3092\\u9632\\u3050\\u305F\\u3081\\u3001\\u3057\\u3070\\u3089\\u304F\\u5F85\\u3064\\n\"], [\"\\n display: flex;\\n gap: 16px;\\n \", \";\\n \", \"; // \\u89AA\\u8981\\u7D20\\u306Etransition(0.2s)\\u4E2D\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u306E\\u3092\\u9632\\u3050\\u305F\\u3081\\u3001\\u3057\\u3070\\u3089\\u304F\\u5F85\\u3064\\n\"])), PLAYER_UI_TRANSITION, function (_a) {\n var show = _a.show;\n return show &&\n 'transition-delay: 0.5s;';\n});\nvar LowerLeft = styled.div(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n\"], [\"\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n\"])));\nvar LowerRight = styled.div(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n margin-left: auto;\\n display: inline-flex;\\n align-items: center;\\n gap: 16px;\\n\"], [\"\\n margin-left: auto;\\n display: inline-flex;\\n align-items: center;\\n gap: 16px;\\n\"])));\nvar Footer = {\n Container: FooterContainer,\n Upper: Upper,\n UpperLeft: UpperLeft,\n Lower: Lower,\n LowerLeft: LowerLeft,\n LowerRight: LowerRight,\n};\n// Main\nvar MainContainer = styled.div(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n flex-grow: 1;\\n \", \";\\n \", \"; // \\u89AA\\u8981\\u7D20\\u306Etransition(0.2s)\\u4E2D\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u306E\\u3092\\u9632\\u3050\\u305F\\u3081\\u3001\\u3057\\u3070\\u3089\\u304F\\u5F85\\u3064\\n\"], [\"\\n flex-grow: 1;\\n \", \";\\n \", \"; // \\u89AA\\u8981\\u7D20\\u306Etransition(0.2s)\\u4E2D\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u306E\\u3092\\u9632\\u3050\\u305F\\u3081\\u3001\\u3057\\u3070\\u3089\\u304F\\u5F85\\u3064\\n\"])), PLAYER_UI_TRANSITION, function (_a) {\n var show = _a.show;\n return show &&\n 'transition-delay: 0.5s;';\n});\nvar Buttons = styled.div(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n padding: 0 17.5%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\\n > *:only-child {\\n margin: 0 auto;\\n }\\n\"], [\"\\n padding: 0 17.5%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\\n > *:only-child {\\n margin: 0 auto;\\n }\\n\"])));\nvar PostplayContainer = styled.div(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n z-index: \", \";\\n\\n \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n z-index: \", \";\\n\\n \", \";\\n\"])), getZIndex('POSTPLAY'), PLAYER_UI_TRANSITION);\nvar Main = {\n Container: MainContainer,\n Buttons: Buttons,\n};\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16;\n\nexport { Footer, Header, Main, PostplayContainer, UIContainer };\n//# sourceMappingURL=styles.es.js.map\n","export { Footer, Header, Main, PostplayContainer, UIContainer } from './styles.es.js';\nimport '../../tslib.es6-3868aa2e.js';\nimport 'styled-components';\nimport '../../styles/stackOrder.es.js';\nimport '../../styles/index.es.js';\n//# sourceMappingURL=index.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgFullscreenOn(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 11H11v16h5V16h11v-5zM37 16v-5h16v16h-5V16H37zM37 48h11V37h5v16H37v-5zM16 37v11h11v5H11V37h5z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgFullscreenOn as default };\n//# sourceMappingURL=fullscreen_on.es.js.map\n","import * as React from 'react';\n\nvar _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction SvgFullscreenOff(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 11h5v16H11v-5h11V11zM22 53h5V37H11v5h11v11zM37 11h5v11h11v5H37V11zM42 53h-5V37h16v5H42v11z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { SvgFullscreenOff as default };\n//# sourceMappingURL=fullscreen_off.es.js.map\n","import { b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { useState, useEffect } from 'react';\nimport { IconButton } from '../Button/Button.es.js';\nimport SvgFullscreenOn from '../../assets/icons/fullscreen_on.es.js';\nimport SvgFullscreenOff from '../../assets/icons/fullscreen_off.es.js';\nimport 'styled-components';\n\nfunction FullscreenButtonContainer(_a) {\n var player = _a.player, iconSize = _a.iconSize, props = __rest(_a, [\"player\", \"iconSize\"]);\n var _b = useState(false), isFullscreen = _b[0], setIsFullscreen = _b[1];\n useEffect(function () {\n player.control.onFullscreenChange(setIsFullscreen);\n }, [player.control]);\n return (jsx(IconButton, __assign({ onClick: player.control.toggleFullscreen, iconSize: iconSize, title: \"\\u30D5\\u30EB\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3\" }, props, { children: isFullscreen ? jsx(SvgFullscreenOff, {}) : jsx(SvgFullscreenOn, {}) })));\n}\n\nexport { FullscreenButtonContainer };\n//# sourceMappingURL=index.es.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useState, useEffect, useCallback } from 'react';\nimport { CameraListButton } from '../DialogButton/index.es.js';\nimport { chooseByWeight } from '../../utils/index.es.js';\nimport usePlayerOptions, { checkIsRealtime } from '../../hooks/usePlayerOptions.es.js';\nimport '../../tslib.es6-3868aa2e.js';\nimport '../DialogButton/styles.es.js';\nimport 'styled-components';\nimport '../../styles/index.es.js';\nimport '../MobileDialog/index.es.js';\nimport '@react-spring/web';\nimport '../MobileDialog/styles.es.js';\nimport '../Dialog/index.es.js';\nimport 'react-dom';\nimport '@popperjs/core';\nimport '../../styles/stackOrder.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../styles/theme.es.js';\nimport '../Button/Button.es.js';\nimport '../../assets/icons/play.es.js';\nimport '../Button/NextPlayableButton.es.js';\nimport '../NextPlayable/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/close.es.js';\nimport '../../assets/icons/next_episode.es.js';\nimport '../../hooks/useSceneImages.es.js';\nimport '@u-next/ims-parser';\nimport '../SceneSearch/styles.es.js';\nimport '../../hooks/useEffectButSkipFirstRender.es.js';\nimport '../../assets/icons/sub.es.js';\nimport '../../assets/icons/setting.es.js';\nimport '../../assets/icons/half_arrow_down.es.js';\nimport '../../assets/icons/episode.es.js';\nimport '../../assets/icons/dub.es.js';\nimport '../../assets/icons/check.es.js';\nimport '../../assets/icons/camera.es.js';\n\nvar CameraList = function (_a) {\n var _b, _c, _d;\n var player = _a.player, onDialogOpen = _a.onDialogOpen, _e = _a.iconOnly, iconOnly = _e === void 0 ? false : _e, isPlayerUIHidden = _a.isPlayerUIHidden;\n var _f = useState((_c = (_b = player.angleSelector) === null || _b === void 0 ? void 0 : _b.endPointIndex) !== null && _c !== void 0 ? _c : 0), endpointIndex = _f[0], setEndpointIndex = _f[1];\n var _g = useState(undefined), endPoints = _g[0], setEndpoints = _g[1];\n useEffect(function () {\n player.waitForAngleSelector().then(function () {\n var _a;\n setEndpoints((_a = player.angleSelector) === null || _a === void 0 ? void 0 : _a.endPoints);\n });\n }, [player, player.angleSelector]);\n useEffect(function () {\n var _a;\n var handleAngleChange = function (index) {\n setEndpointIndex(index);\n };\n (_a = player.angleSelector) === null || _a === void 0 ? void 0 : _a.onAngleChange(handleAngleChange);\n return function () {\n var _a;\n (_a = player.angleSelector) === null || _a === void 0 ? void 0 : _a.offAngleChange(handleAngleChange);\n };\n }, [player.angleSelector]);\n var playerOptions = usePlayerOptions(player);\n var isRealtime = checkIsRealtime(playerOptions);\n var cameraList = endPoints === null || endPoints === void 0 ? void 0 : endPoints.map(function (camera, index) {\n var _a;\n var previewUrl, previewUpdateIntervalMs, timeshiftPreviewUrl;\n if (camera.previews) {\n var selectedPreviewCdn = chooseByWeight(camera.previews);\n if (selectedPreviewCdn) {\n previewUrl = selectedPreviewCdn.playlistUrl;\n previewUpdateIntervalMs = selectedPreviewCdn.updateIntervalMs;\n timeshiftPreviewUrl = selectedPreviewCdn.timeshiftPlaylistUrl;\n }\n }\n return {\n isPlaying: index === endpointIndex,\n displayName: (_a = camera.subtitle) !== null && _a !== void 0 ? _a : '',\n image: camera.image,\n previewUrl: previewUrl,\n previewUpdateIntervalMs: previewUpdateIntervalMs,\n timeshiftPreviewUrl: timeshiftPreviewUrl,\n sceneSearchList: camera.sceneSearchList,\n handleCameraChange: function () { var _a; return (_a = player.angleSelector) === null || _a === void 0 ? void 0 : _a.switchAngle(index); },\n };\n });\n var getCurrentTimeFromStart = useCallback(function () {\n var _a, _b;\n return (player.getVideoElement().currentTime - ((_b = (_a = player.getSeekRange()) === null || _a === void 0 ? void 0 : _a.start) !== null && _b !== void 0 ? _b : 0));\n }, [player]);\n return (cameraList === null || cameraList === void 0 ? void 0 : cameraList.length) && (cameraList === null || cameraList === void 0 ? void 0 : cameraList.length) > 1 ? (jsx(CameraListButton, { iconOnly: iconOnly, cameraList: cameraList, onDialogOpen: onDialogOpen, getCurrentTimeFromStart: getCurrentTimeFromStart, isRealtime: isRealtime, isTimeshift: playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.isTimeshift, deliveryStartEpoch: (_d = playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.live) === null || _d === void 0 ? void 0 : _d.deliveryStartEpoch, isPlayerUIHidden: isPlayerUIHidden })) : null;\n};\n\nexport { CameraList as default };\n//# sourceMappingURL=index.es.js.map\n","import { b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { IconButton } from './Button.es.js';\nimport 'styled-components';\n\nvar SeekButton = function (_a) {\n var player = _a.player, interval = _a.interval, title = _a.title, iconSize = _a.iconSize, children = _a.children, onClick = _a.onClick, props = __rest(_a, [\"player\", \"interval\", \"title\", \"iconSize\", \"children\", \"onClick\"]);\n return (jsx(IconButton, __assign({ title: title, onClick: function (event) {\n player.control.seekFromCurrentTime(interval);\n onClick === null || onClick === void 0 ? void 0 : onClick(event);\n }, iconSize: iconSize }, props, { children: children })));\n};\n\nexport { SeekButton };\n//# sourceMappingURL=SeekButton.es.js.map\n","import { b as __rest, _ as __assign } from '../../tslib.es6-3868aa2e.js';\nimport { jsx } from 'react/jsx-runtime';\nimport { useState, useCallback, useEffect } from 'react';\nimport { IconButton } from './Button.es.js';\nimport SvgPlay from '../../assets/icons/play.es.js';\nimport SvgPause from '../../assets/icons/pause.es.js';\nimport 'styled-components';\n\nvar PlayPauseButton = function (_a) {\n var player = _a.player, iconSize = _a.iconSize, onClick = _a.onClick, props = __rest(_a, [\"player\", \"iconSize\", \"onClick\"]);\n var _b = useState(player.getVideoElement().paused), isPaused = _b[0], setIsPaused = _b[1];\n var handlePause = useCallback(function () {\n setIsPaused(true);\n }, []);\n var handlePlay = useCallback(function () {\n setIsPaused(false);\n }, []);\n useEffect(function () {\n player.getVideoElement().addEventListener('pause', handlePause);\n player.getVideoElement().addEventListener('play', handlePlay);\n return function () {\n player.getVideoElement().removeEventListener('pause', handlePause);\n player.getVideoElement().removeEventListener('play', handlePlay);\n };\n }, [handlePlay, handlePause, player]);\n return (jsx(IconButton, __assign({ title: isPaused ? '再生' : '停止', onClick: function (event) {\n player.control.togglePlayPause();\n onClick === null || onClick === void 0 ? void 0 : onClick(event);\n }, iconSize: iconSize }, props, { children: isPaused ? jsx(SvgPlay, {}) : jsx(SvgPause, {}) })));\n};\n\nexport { PlayPauseButton };\n//# sourceMappingURL=PlayPauseButton.es.js.map\n","export { SeekButton } from './SeekButton.es.js';\nexport { PlayPauseButton } from './PlayPauseButton.es.js';\nexport { NextPlayableButton, NextPlayableContainer, Wrapper } from './NextPlayableButton.es.js';\nexport { CloseButton, IconButton, ModalityButton, PaddedIconButton, TextButton } from './Button.es.js';\nimport '../../tslib.es6-3868aa2e.js';\nimport 'react/jsx-runtime';\nimport 'react';\nimport '../../assets/icons/play.es.js';\nimport '../../assets/icons/pause.es.js';\nimport 'styled-components';\nimport '../NextPlayable/index.es.js';\nimport '../../styles/index.es.js';\nimport '../../hooks/useContainerSize.es.js';\nimport '../../hooks/useDeviceInfo.es.js';\nimport 'bowser';\nimport '../../contexts/ContainerSizeContext/index.es.js';\nimport '../../assets/icons/replay.es.js';\nimport '../../assets/icons/close.es.js';\nimport '../../assets/icons/next_episode.es.js';\n//# sourceMappingURL=index.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction Svg10SForward(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 13.422V19l9-6.75V19l10-7.5L37 4v6.75L28 4v4.332C16.65 10.236 8 20.108 8 32c0 13.255 10.745 24 24 24s24-10.745 24-24c0-.674-.028-1.34-.082-2h-5.022c.069.657.104 1.325.104 2 0 10.493-8.507 19-19 19s-19-8.507-19-19c0-9.121 6.427-16.741 15-18.578z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M40.828 38.463c-.93.599-2.038.898-3.32.898-1.29 0-2.403-.3-3.34-.898-.931-.606-1.65-1.458-2.158-2.559-.501-1.107-.752-2.422-.752-3.945v-.02c0-1.523.25-2.835.752-3.935.508-1.107 1.227-1.96 2.158-2.559.938-.599 2.05-.898 3.34-.898 1.282 0 2.39.3 3.32.898.931.6 1.647 1.452 2.149 2.559.5 1.1.752 2.412.752 3.935v.02c0 1.523-.251 2.838-.752 3.945-.502 1.1-1.218 1.953-2.149 2.559zm-4.443-2.735c.306.326.68.489 1.123.489.436 0 .804-.163 1.103-.489.306-.331.537-.813.694-1.445.156-.631.234-1.406.234-2.324v-.02c0-.918-.078-1.692-.234-2.324-.157-.631-.388-1.11-.694-1.435a1.441 1.441 0 00-1.103-.489c-.443 0-.817.163-1.123.489-.3.325-.53.804-.694 1.435-.156.632-.234 1.407-.234 2.325v.019c0 .918.078 1.693.234 2.324.163.632.394 1.114.694 1.445z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.957 39h-4.14V28.512h-.176l-3.36 2.226v-3.466l3.535-2.364h4.141V39z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { Svg10SForward as default };\n//# sourceMappingURL=10s_forward.es.js.map\n","import * as React from 'react';\n\nvar _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction Svg10SBackward(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 13.422V19l-9-6.75V19l-10-7.5L27 4v6.75L36 4v4.332C47.35 10.236 56 20.108 56 32c0 13.255-10.745 24-24 24S8 45.255 8 32c0-.674.028-1.34.082-2h5.022A19.207 19.207 0 0013 32c0 10.493 8.507 19 19 19s19-8.507 19-19c0-9.121-6.427-16.741-15-18.578z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.816 39h4.141V24.908h-4.14l-3.536 2.363v3.467l3.36-2.226h.175V39zM37.508 39.361c1.282 0 2.39-.3 3.32-.898.931-.606 1.647-1.458 2.149-2.559.5-1.107.752-2.422.752-3.945v-.02c0-1.523-.251-2.835-.752-3.935-.502-1.107-1.218-1.96-2.149-2.559-.93-.599-2.038-.898-3.32-.898-1.29 0-2.403.3-3.34.898-.931.6-1.65 1.452-2.158 2.559-.501 1.1-.752 2.412-.752 3.935v.02c0 1.523.25 2.838.752 3.945.508 1.1 1.227 1.953 2.158 2.559.938.599 2.05.898 3.34.898zm0-3.144c-.443 0-.817-.163-1.123-.489-.3-.331-.53-.813-.694-1.445-.156-.631-.234-1.406-.234-2.324v-.02c0-.918.078-1.692.234-2.324.163-.631.394-1.11.694-1.435.306-.326.68-.489 1.123-.489.436 0 .804.163 1.103.489.306.325.537.804.694 1.435.156.632.234 1.407.234 2.325v.019c0 .918-.078 1.693-.234 2.324-.157.632-.388 1.114-.694 1.445-.3.326-.667.489-1.103.489z\",\n fill: \"currentColor\"\n })));\n}\n\nexport { Svg10SBackward as default };\n//# sourceMappingURL=10s_backward.es.js.map\n","import { UVideoPlayer, UVideoPlayerSceneSearcher, isPlaybackError } from '@u-next/videoplayer';\nexport { isDrmType, isStreamFormat } from '@u-next/videoplayer';\nimport styled from 'styled-components';\nimport React, { useCallback, useState, useEffect, useRef, useMemo, useImperativeHandle } from 'react';\nimport { getZIndex } from '@u-next/babystar-shared/styles/stackOrder';\nimport { FONT_FAMILY } from '@u-next/babystar-shared/styles';\nimport useUIDisplayTimer from '@u-next/babystar-shared/hooks/useUIDisplayTimer';\nimport usePageVisibilityChange from '@u-next/babystar-shared/hooks/usePageVisibilityChange';\nimport useContainerSize from '@u-next/babystar-shared/hooks/useContainerSize';\nimport ContainerSizeContextProvider from '@u-next/babystar-shared/contexts/ContainerSizeContext/ContainerSizeContextProvider';\nimport StartPlayOverlay from '@u-next/babystar-shared/components/StartPlayOverlay';\nimport PointerEventArea from '@u-next/babystar-shared/components/PointerEventArea';\nimport LoadingIndicator from '@u-next/babystar-shared/components/LoadingIndicator';\nimport { ControlHintWrapper, GestureHintContainer, ControlHintContainer } from '@u-next/babystar-shared/components/ControlHint';\nimport ContextWrapper from '@u-next/babystar-shared/components/ContextWrapper';\nimport { createSession, isSessionError } from '@u-next/babystar-session';\nimport usePlayerOptions from '@u-next/babystar-shared/hooks/usePlayerOptions';\nimport { VolumeButtonContainer } from '@u-next/babystar-shared/components/Volume';\nimport { ShortcutButtonContainer } from '@u-next/babystar-shared/components/ShortcutTable';\nimport SceneSearchContainer from '@u-next/babystar-shared/components/SceneSearch/container';\nimport ProgressBarContainer from '@u-next/babystar-shared/components/ProgressBar/container';\nimport PlayerOverlay from '@u-next/babystar-shared/components/PlayerOverlay';\nimport PlayPauseClickArea from '@u-next/babystar-shared/components/PlayPauseClickArea';\nimport { PinPButtonContainer } from '@u-next/babystar-shared/components/PinP';\nimport { UIContainer, Header, Main, Footer } from '@u-next/babystar-shared/components/Layout';\nimport { FullscreenButtonContainer } from '@u-next/babystar-shared/components/Fullscreen';\nimport { PlaybackRateButtonContainer } from '@u-next/babystar-shared/components/DialogButton/PlaybackRateButton';\nimport CameraList from '@u-next/babystar-shared/components/CameraList';\nimport { CloseButton, SeekButton, PlayPauseButton } from '@u-next/babystar-shared/components/Button';\nimport CloseIcon from '@u-next/babystar-shared/assets/icons/close';\nimport ForwardIcon from '@u-next/babystar-shared/assets/icons/10s_forward';\nimport BackwardIcon from '@u-next/babystar-shared/assets/icons/10s_backward';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n}\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar PlayerUI = function (_a) {\n var _b, _c;\n var videoPlayer = _a.videoPlayer, showUI = _a.showUI, forceHideUI = _a.forceHideUI, setIsUITimerDisabled = _a.setIsUITimerDisabled, sceneSearcher = _a.sceneSearcher, isBuffering = _a.isBuffering, onClose = _a.onClose, mode = _a.mode, playRangeStartTime = _a.playRangeStartTime, playRangeEndTime = _a.playRangeEndTime, chaptersInfo = _a.chaptersInfo;\n var playerOptions = usePlayerOptions(videoPlayer);\n var title = (_b = playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.meta) === null || _b === void 0 ? void 0 : _b.title;\n var subtitle = (_c = playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.meta) === null || _c === void 0 ? void 0 : _c.subtitle;\n var isRealtime = !!videoPlayer.getIsRealTime();\n var isMobile = useContainerSize('MOBILE');\n /* For Control */\n var togglePlayPauseOnDialogOpen = useCallback(function (isOpen) {\n if (isOpen) {\n videoPlayer.getVideoElement().pause();\n }\n else {\n videoPlayer.getVideoElement().play();\n }\n setIsUITimerDisabled(isOpen);\n }, [setIsUITimerDisabled, videoPlayer]);\n var handleProgressBarSeekStart = function () {\n setIsUITimerDisabled(true);\n };\n var handleProgressBarSeekEnd = function () {\n forceHideUI(100);\n setIsUITimerDisabled(false);\n };\n var hasPseudProgressBar = isMobile && mode === 'inline' && !isRealtime;\n var _d = useState(false), hideUpperLeftButtons = _d[0], setHideUpperLeftButtons = _d[1];\n useEffect(function () {\n var handleSceneSearch = function () {\n setHideUpperLeftButtons(true);\n };\n var handleSceneSearchEnd = function () {\n setHideUpperLeftButtons(false);\n };\n sceneSearcher.onSceneSearch(handleSceneSearch);\n sceneSearcher.onSceneSearchEnd(handleSceneSearchEnd);\n return function () {\n sceneSearcher.offSceneSearch(handleSceneSearch);\n sceneSearcher.offSceneSearchEnd(handleSceneSearchEnd);\n };\n }, [sceneSearcher]);\n var showMobileSceneSearchDrag = isMobile && hideUpperLeftButtons;\n return (React.createElement(React.Fragment, null,\n React.createElement(LoadingIndicator, { show: isBuffering }),\n React.createElement(PlayerOverlay, { show: showUI && !isBuffering }),\n React.createElement(UIContainer, { show: showUI },\n React.createElement(Header.Container, { isMobile: isMobile, mode: mode, show: !showMobileSceneSearchDrag },\n onClose && mode === 'default' && (React.createElement(CloseButton, { isMobile: isMobile, onClick: onClose },\n React.createElement(CloseIcon, null))),\n mode === 'default' && title && (React.createElement(Header.TitleContainer, null,\n React.createElement(Header.Title, { isMobile: isMobile }, title),\n subtitle && (React.createElement(Header.SubTitle, { isMobile: isMobile }, subtitle)))),\n isMobile && mode === 'inline' && (React.createElement(Header.RightPane, null,\n !isRealtime && (React.createElement(PlaybackRateButtonContainer, { iconOnly: true, position: \"topRight\", player: videoPlayer, onDialogOpen: togglePlayPauseOnDialogOpen, isPlayerUIHidden: !showUI })),\n React.createElement(CameraList, { iconOnly: true, player: videoPlayer, onDialogOpen: setIsUITimerDisabled, isPlayerUIHidden: !showUI })))),\n React.createElement(Main.Container, { show: !showMobileSceneSearchDrag },\n !isMobile && (React.createElement(PlayPauseClickArea, { player: videoPlayer, show: showUI })),\n !isRealtime && isMobile && (React.createElement(Main.Buttons, null,\n mode === 'default' && (React.createElement(SeekButton, { player: videoPlayer, interval: -10, iconSize: \"40\", title: \"10\\u79D2\\u623B\\u308B\" },\n React.createElement(BackwardIcon, null))),\n React.createElement(PlayPauseButton, { iconSize: \"72\", player: videoPlayer }),\n mode === 'default' && (React.createElement(SeekButton, { player: videoPlayer, interval: 10, iconSize: \"40\", title: \"10\\u79D2\\u9032\\u3080\" },\n React.createElement(ForwardIcon, null)))))),\n React.createElement(Footer.Container, { mode: mode, isMobile: isMobile },\n !isRealtime && (React.createElement(React.Fragment, null,\n React.createElement(Footer.Upper, null, !isMobile && (React.createElement(Footer.UpperLeft, null, !hideUpperLeftButtons && (React.createElement(React.Fragment, null,\n React.createElement(PlayPauseButton, { iconSize: \"64\", player: videoPlayer }),\n React.createElement(SeekButton, { player: videoPlayer, interval: -10, title: \"10\\u79D2\\u623B\\u308B\" },\n React.createElement(BackwardIcon, null)),\n React.createElement(SeekButton, { player: videoPlayer, interval: 10, title: \"10\\u79D2\\u9032\\u3080\" },\n React.createElement(ForwardIcon, null))))))),\n React.createElement(ProgressBarContainer, { player: videoPlayer, sceneSearcher: sceneSearcher, onSeekStart: handleProgressBarSeekStart, onSeekEnd: handleProgressBarSeekEnd, mode: mode, chaptersInfo: chaptersInfo, min: playRangeStartTime, max: playRangeEndTime }))),\n React.createElement(Footer.Lower, { show: !showMobileSceneSearchDrag },\n (!isMobile || mode === 'default') && (React.createElement(Footer.LowerLeft, null,\n !isRealtime && (React.createElement(PlaybackRateButtonContainer, { player: videoPlayer, onDialogOpen: togglePlayPauseOnDialogOpen, isPlayerUIHidden: !showUI })),\n React.createElement(CameraList, { player: videoPlayer, onDialogOpen: setIsUITimerDisabled, isPlayerUIHidden: !showUI }))),\n React.createElement(Footer.LowerRight, null,\n !isMobile && (React.createElement(React.Fragment, null,\n React.createElement(VolumeButtonContainer, { player: videoPlayer, buttonIconSize: isMobile ? (mode === 'inline' ? '32' : '40') : '48' }),\n React.createElement(ShortcutButtonContainer, { player: videoPlayer, iconSize: isMobile ? (mode === 'inline' ? '32' : '40') : '48', onDialogOpen: setIsUITimerDisabled }))),\n React.createElement(PinPButtonContainer, { player: videoPlayer, iconSize: isMobile ? (mode === 'inline' ? '32' : '40') : '48' }),\n React.createElement(FullscreenButtonContainer, { player: videoPlayer, iconSize: isMobile ? (mode === 'inline' ? '32' : '40') : '48' }))))),\n React.createElement(SceneSearchContainer, { player: videoPlayer, sceneSearcher: sceneSearcher }),\n hasPseudProgressBar && (React.createElement(ProgressBarContainer, { isPseud: true, showPseud: !showUI, player: videoPlayer, sceneSearcher: sceneSearcher, chaptersInfo: chaptersInfo, min: playRangeStartTime, max: playRangeEndTime }))));\n};\n\nvar MediaEventNames = [\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'seeking',\n 'waiting',\n 'emptied',\n 'ended',\n 'error',\n 'timeupdate',\n];\nfunction onTimeUpdateHandler(_a) {\n var e = _a.e, onSwitchChapter = _a.onSwitchChapter, chaptersInfo = _a.chaptersInfo, displayChapterIndex = _a.displayChapterIndex;\n if (onSwitchChapter) {\n var currentTime_1 = e.target.currentTime;\n var currentChapterIndex = chaptersInfo === null || chaptersInfo === void 0 ? void 0 : chaptersInfo.findIndex(function (_a) {\n var startTime = _a.startTime, endTime = _a.endTime;\n return startTime <= currentTime_1 && currentTime_1 < endTime;\n });\n if (currentChapterIndex !== undefined &&\n currentChapterIndex !== displayChapterIndex.current) {\n displayChapterIndex.current = currentChapterIndex;\n onSwitchChapter(currentChapterIndex);\n }\n }\n}\nvar PlayerWrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n width: 100%;\\n height: 100%;\\n background-color: black;\\n line-height: 1;\\n color: rgba(255, 255, 255, 1);\\n font-family: \", \";\\n z-index: \", \";\\n user-select: none;\\n\\n &:focus {\\n outline: none;\\n }\\n\"], [\"\\n position: relative;\\n width: 100%;\\n height: 100%;\\n background-color: black;\\n line-height: 1;\\n color: rgba(255, 255, 255, 1);\\n font-family: \", \";\\n z-index: \", \";\\n user-select: none;\\n\\n &:focus {\\n outline: none;\\n }\\n\"])), FONT_FAMILY.GLOBAL, getZIndex('PLAYER_WRAPPER'));\nvar Player = function (_a, ref) {\n var _b, _c, _d;\n var playbackAuthorization = _a.playbackAuthorization, authorizationToken = _a.authorizationToken, endPoints = _a.endPoints, sessionArgs = _a.sessionArgs, playbackType = _a.playbackType, live = _a.live, _e = _a.autoplay, autoplay = _e === void 0 ? true : _e, onClose = _a.onClose, onError = _a.onError, theme = _a.theme, _f = _a.isInline, isInline = _f === void 0 ? false : _f, abrOptions = _a.abrOptions, streamingOptions = _a.streamingOptions, playRange = _a.playRange, chaptersInfo = _a.chaptersInfo, onSwitchChapter = _a.onSwitchChapter;\n var isRealtime = playbackType === 'live' || playbackType === 'linear';\n var _g = useState(false), isPlayRangeEnabled = _g[0], setIsPlayRangeEnabled = _g[1];\n /**\n * Examples:\n * 1. if a video's play range is 2:00~3:00\n * duration: 60 (seconds)\n * playRangeStartTime: 120\n * playRangeEndTime: 180\n * 2. if a video's play range is not set (which means full video will be played)\n * duration: length of the whole video\n * playRangeStartTime: 0\n * playRangeEndTime: length of the whole video\n */\n var _h = useState(0), duration = _h[0], setDuration = _h[1];\n var playRangeStartTime = (isPlayRangeEnabled && (playRange === null || playRange === void 0 ? void 0 : playRange.start)) || 0;\n var playRangeEndTime = (isPlayRangeEnabled && (playRange === null || playRange === void 0 ? void 0 : playRange.end)) || duration;\n /**\n * eventEmitter dispatches playback related events\n * components or modules that respond to playback events can subscribe to the eventEmitter\n */\n var eventEmitterRef = useRef(null); // Keep the reusable eventEmitter cross renders\n var videoPlayer = useMemo(function () { return new UVideoPlayer(); }, []);\n var _j = useState(false), isLoaded = _j[0], setIsLoaded = _j[1];\n var _k = useState(false), isBuffering = _k[0], setIsBuffering = _k[1];\n var _l = useState(false), showStartPlayOverlay = _l[0], setShowStartPlayOverlay = _l[1];\n var _m = useUIDisplayTimer(), showUI = _m.showUI, startUITimer = _m.startUITimer, forceHideUI = _m.forceHideUI, setIsUITimerDisabled = _m.setIsUITimerDisabled;\n var isInitialLoadRef = useRef(true);\n var sessionRef = useRef();\n var _o = useState(false), isSessionActivated = _o[0], setIsSessionActivated = _o[1];\n var isIsemError = useRef(false);\n useImperativeHandle(ref, function () { return ({\n takeOverSession: function () { return __awaiter(void 0, void 0, void 0, function () {\n var videoElement, e_1, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(sessionRef.current && (sessionArgs === null || sessionArgs === void 0 ? void 0 : sessionArgs.type) === 'isem')) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, sessionRef.current.update(__assign(__assign({}, sessionArgs), { overwrite: true }))];\n case 2:\n _a.sent();\n isIsemError.current = false;\n videoElement = videoPlayer.getVideoElement();\n if (videoElement && videoElement.readyState >= 1) {\n videoElement.play();\n setShowStartPlayOverlay(false);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n if (e_1 && typeof e_1 === 'object') {\n error = e_1;\n if (isSessionError(error)) {\n return [2 /*return*/, error];\n }\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, null];\n }\n });\n }); },\n }); }, [sessionArgs, videoPlayer]);\n var playerWrapperRef = useRef(null);\n var sceneSearcher = useMemo(function () { return new UVideoPlayerSceneSearcher(); }, []);\n var isMobile = useContainerSize('MOBILE', false, (_b = playerWrapperRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth);\n // memoized stateless callbacks\n // handle with care: functions here must not depend on recomputed values or states\n var callbacks = useMemo(function () { return ({\n onPlayerError: function (error) {\n if (onError && isPlaybackError(error)) {\n var critical = error.critical, code = error.code, message = error.message;\n if (critical) {\n var playerError = new Error(message);\n playerError.customCode = code;\n onError(playerError);\n }\n }\n },\n onSessionError: function (error) {\n if (onError) {\n var playerError = new Error(error.message);\n playerError.customCode = error.status;\n var videoElement = videoPlayer.getVideoElement();\n isIsemError.current = true;\n if (videoElement.readyState >= 1) {\n videoPlayer.getVideoElement().pause();\n }\n onError(playerError);\n }\n },\n onSessionActivated: function () {\n setIsSessionActivated(true);\n },\n onPlayerLoaded: function () {\n // Not Implemented\n },\n onPlayerUnloaded: function () {\n // Not Implemented\n },\n onPlay: function () {\n setShowStartPlayOverlay(false);\n },\n onPause: function () {\n // Not implemented\n },\n onClose: onClose,\n }); }, [onError, onClose, videoPlayer]);\n var onFirstProgress = useCallback(function () {\n var videoElement = videoPlayer.getVideoElement();\n setDuration(videoElement.duration - playRangeStartTime);\n setIsLoaded(true);\n }, [playRangeStartTime, videoPlayer]);\n var endPointIndex = (_d = (_c = videoPlayer.angleSelector) === null || _c === void 0 ? void 0 : _c.endPointIndex) !== null && _d !== void 0 ? _d : 0;\n var displayChapterIndex = useRef(0);\n useEffect(function () {\n videoPlayer.addAngleSelector(endPoints);\n var videoTagWrapper = document.getElementById('videoTagWrapper');\n if (videoTagWrapper) {\n videoPlayer.control.attachTo(videoTagWrapper);\n }\n eventEmitterRef.current = new EventTarget();\n var listener = function (e) {\n var _a;\n if (!eventEmitterRef.current) {\n return;\n }\n if (e.type === 'timeupdate') {\n onTimeUpdateHandler({\n e: e,\n onSwitchChapter: onSwitchChapter,\n chaptersInfo: chaptersInfo,\n displayChapterIndex: displayChapterIndex,\n });\n }\n eventEmitterRef.current.dispatchEvent(new CustomEvent(e.type, {\n detail: {\n currentTime: \n // @ts-ignore FIXME: WF-4237 refactor this with Context\n ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.currentTime) && Math.floor(e.target.currentTime),\n },\n }));\n };\n var videoElement = videoPlayer.getVideoElement();\n MediaEventNames.forEach(function (type) {\n videoElement.addEventListener(type, listener);\n });\n window.addEventListener('beforeunload', listener);\n return function () {\n MediaEventNames.forEach(function (type) {\n videoElement.removeEventListener(type, listener);\n });\n window.removeEventListener('beforeunload', listener);\n if (eventEmitterRef.current) {\n eventEmitterRef.current.dispatchEvent(new CustomEvent('stopped', {\n detail: {\n currentTime: Math.floor(videoElement.currentTime),\n },\n }));\n eventEmitterRef.current = null;\n }\n };\n }, [endPoints, videoPlayer, chaptersInfo, onSwitchChapter]);\n useEffect(function () {\n isIsemError.current = false;\n if (sessionArgs) {\n sessionRef.current = createSession(sessionArgs, {\n onSessionError: callbacks.onSessionError,\n onSessionActivated: callbacks.onSessionActivated,\n });\n }\n else {\n sessionRef.current = undefined;\n }\n var session = sessionRef.current;\n if (session && videoPlayer) {\n videoPlayer.attachSession(session);\n }\n return function () {\n videoPlayer.detachSession(false);\n };\n }, [sessionArgs, callbacks, videoPlayer]);\n useEffect(function () {\n var _a, _b;\n var defaultEndPointIndex = (_b = (_a = videoPlayer.angleSelector) === null || _a === void 0 ? void 0 : _a.endPointIndex) !== null && _b !== void 0 ? _b : 0;\n videoPlayer.setOptions({\n meta: {\n title: endPoints[defaultEndPointIndex].title,\n subtitle: endPoints[defaultEndPointIndex].subtitle,\n },\n playables: endPoints[defaultEndPointIndex].playables,\n playbackAuthorization: playbackAuthorization,\n authorizationToken: authorizationToken,\n playbackType: playbackType,\n live: live,\n abrOptions: abrOptions,\n streamingOptions: streamingOptions,\n playRange: playRange,\n keepPlaybackRateTemporarily: true,\n keepVolumeTemporarily: true,\n }, {\n onBuffering: function (isBuffering) {\n setIsBuffering(isBuffering);\n },\n onError: callbacks.onPlayerError,\n onLoadStart: function () {\n setIsLoaded(false);\n },\n onLoaded: callbacks.onPlayerLoaded,\n onUnloaded: callbacks.onPlayerUnloaded,\n });\n sceneSearcher.setOptions({\n sceneSearchList: endPoints[endPointIndex].sceneSearchList,\n player: videoPlayer,\n isMobile: isMobile,\n });\n var videoElement = videoPlayer === null || videoPlayer === void 0 ? void 0 : videoPlayer.getVideoElement();\n if (videoElement) {\n videoElement.addEventListener('play', callbacks.onPlay);\n videoElement.addEventListener('pause', callbacks.onPause);\n videoElement.addEventListener('progress', onFirstProgress, {\n once: true,\n });\n return function () {\n videoElement.removeEventListener('play', callbacks.onPlay);\n videoElement.removeEventListener('pause', callbacks.onPause);\n videoElement.removeEventListener('progress', onFirstProgress);\n };\n }\n }, [\n abrOptions,\n authorizationToken,\n callbacks,\n playbackType,\n playRange,\n playbackAuthorization,\n sessionArgs,\n streamingOptions,\n videoPlayer,\n live,\n endPoints,\n onFirstProgress,\n sceneSearcher,\n endPointIndex,\n isMobile,\n ]);\n var load = useCallback(function () {\n videoPlayer\n .load()\n .then(function () {\n setIsPlayRangeEnabled(Boolean(videoPlayer.isPlayRangeEnabled));\n })\n .catch(function (error) {\n callbacks.onPlayerError(__assign(__assign({}, error), { critical: true }));\n });\n }, [callbacks, videoPlayer]);\n var shallLoad = useMemo(function () {\n return playbackAuthorization === 'none' ||\n (playbackAuthorization === 'playtoken' && authorizationToken) ||\n isSessionActivated;\n }, [playbackAuthorization, authorizationToken, isSessionActivated]);\n useEffect(function () {\n var _a;\n // キーボードショートカット対応のためにwrapperにfocusする\n (_a = playerWrapperRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n // pre-condition for initial license request is either a valid playtoken or an activated ISEM token\n // unless this is met or we have license free mode we cannot start playback\n if (shallLoad) {\n load();\n }\n return function () {\n if (shallLoad) {\n videoPlayer.unload();\n }\n };\n }, [videoPlayer, load, shallLoad]);\n useEffect(function () {\n var videoElement = videoPlayer.getVideoElement();\n if (isLoaded &&\n (autoplay || !isInitialLoadRef.current) &&\n !isIsemError.current) {\n videoElement\n .play()\n .then(function () {\n if (isRealtime) {\n // realtime再生でautoplayに成功した場合、最初にコントロールUIを表示する\n startUITimer();\n }\n })\n .catch(function () {\n // autoplayに失敗した場合、再生ボタンを表示する\n setShowStartPlayOverlay(true);\n });\n }\n else {\n // autoplayが無効の場合、再生ボタンを表示する\n setShowStartPlayOverlay(true);\n }\n isInitialLoadRef.current = false;\n }, [autoplay, isRealtime, startUITimer, videoPlayer, isLoaded]);\n var onPageUnload = useCallback(function () {\n videoPlayer === null || videoPlayer === void 0 ? void 0 : videoPlayer.unload(true);\n }, [videoPlayer]);\n var onPageVisibilityChange = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // タブ切り替えの際、再生を続ける\n return [2 /*return*/];\n });\n }); }, []);\n usePageVisibilityChange({\n onPageUnload: onPageUnload,\n onPageVisibilityChange: onPageVisibilityChange,\n });\n return (React.createElement(ContextWrapper, { keyColor: theme === null || theme === void 0 ? void 0 : theme.keyColor },\n React.createElement(PlayerWrapper, { id: \"videoTagWrapper\", ref: playerWrapperRef, tabIndex: -1 },\n React.createElement(ContainerSizeContextProvider, { containerElement: playerWrapperRef.current },\n !isLoaded ? (React.createElement(LoadingIndicator, { show: true })) : showStartPlayOverlay ? (React.createElement(StartPlayOverlay, { player: videoPlayer })) : (React.createElement(PointerEventArea, { startDisplayOverlay: startUITimer, showUI: showUI, showCursor: showUI || (isInline && !videoPlayer.control.getIsFullscreen()) },\n React.createElement(PlayerUI, { videoPlayer: videoPlayer, sceneSearcher: sceneSearcher, showUI: showUI, forceHideUI: forceHideUI, setIsUITimerDisabled: setIsUITimerDisabled, isBuffering: isBuffering, onClose: callbacks.onClose, mode: isInline && !videoPlayer.control.getIsFullscreen()\n ? 'inline'\n : 'default', playRangeStartTime: playRangeStartTime, playRangeEndTime: playRangeEndTime, chaptersInfo: chaptersInfo }),\n React.createElement(ControlHintWrapper, null,\n React.createElement(GestureHintContainer, { player: videoPlayer, forceHideUI: forceHideUI, disabled: isRealtime }),\n React.createElement(ControlHintContainer, { player: videoPlayer, startUITimer: startUITimer })))),\n React.createElement(\"div\", { id: \"dialog-root\" })))));\n};\nvar Player$1 = React.forwardRef(Player);\nvar templateObject_1;\n\nexport { Player$1 as Player };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHBsYXllci5lc20uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Acm9sbHVwK3BsdWdpbi10eXBlc2NyaXB0QDExLjEuNl9yb2xsdXBAMi43OS4xX3RzbGliQDIuNi4zX3R5cGVzY3JpcHRANC45LjUvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uL3NyYy9QbGF5ZXJVSS50c3giLCIuLi9zcmMvUGxheWVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcclxuICAgIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxyXG4gICAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcclxuICAgIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xyXG4gICAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XHJcbiAgICB2YXIgXywgZG9uZSA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xyXG4gICAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xyXG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcclxuICAgIGRvbmUgPSB0cnVlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcclxuICAgIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xyXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xyXG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XHJcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xyXG4gICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XHJcbiAgICAgICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xyXG4gICAgICAgIGlmIChhc3luYykge1xyXG4gICAgICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XHJcbiAgICAgICAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XHJcbiAgICAgICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XHJcbiAgICAgICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbn1cclxuXHJcbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xyXG4gICAgZnVuY3Rpb24gZmFpbChlKSB7XHJcbiAgICAgICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xyXG4gICAgICAgIGVudi5oYXNFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBuZXh0KCkge1xyXG4gICAgICAgIHdoaWxlIChlbnYuc3RhY2subGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlYy5hc3luYykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZmFpbChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV4dCgpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHM6IF9fZXh0ZW5kcyxcclxuICAgIF9fYXNzaWduOiBfX2Fzc2lnbixcclxuICAgIF9fcmVzdDogX19yZXN0LFxyXG4gICAgX19kZWNvcmF0ZTogX19kZWNvcmF0ZSxcclxuICAgIF9fcGFyYW06IF9fcGFyYW0sXHJcbiAgICBfX21ldGFkYXRhOiBfX21ldGFkYXRhLFxyXG4gICAgX19hd2FpdGVyOiBfX2F3YWl0ZXIsXHJcbiAgICBfX2dlbmVyYXRvcjogX19nZW5lcmF0b3IsXHJcbiAgICBfX2NyZWF0ZUJpbmRpbmc6IF9fY3JlYXRlQmluZGluZyxcclxuICAgIF9fZXhwb3J0U3RhcjogX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXM6IF9fdmFsdWVzLFxyXG4gICAgX19yZWFkOiBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZDogX19zcHJlYWQsXHJcbiAgICBfX3NwcmVhZEFycmF5czogX19zcHJlYWRBcnJheXMsXHJcbiAgICBfX3NwcmVhZEFycmF5OiBfX3NwcmVhZEFycmF5LFxyXG4gICAgX19hd2FpdDogX19hd2FpdCxcclxuICAgIF9fYXN5bmNHZW5lcmF0b3I6IF9fYXN5bmNHZW5lcmF0b3IsXHJcbiAgICBfX2FzeW5jRGVsZWdhdG9yOiBfX2FzeW5jRGVsZWdhdG9yLFxyXG4gICAgX19hc3luY1ZhbHVlczogX19hc3luY1ZhbHVlcyxcclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0OiBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcjogX19pbXBvcnRTdGFyLFxyXG4gICAgX19pbXBvcnREZWZhdWx0OiBfX2ltcG9ydERlZmF1bHQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldDogX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRJbjogX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG4gICAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2U6IF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxyXG4gICAgX19kaXNwb3NlUmVzb3VyY2VzOiBfX2Rpc3Bvc2VSZXNvdXJjZXMsXHJcbn07XHJcbiIsbnVsbCxudWxsXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWlCQTtBQUNPLElBQUksUUFBUSxHQUFHLFdBQVc7QUFDakMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDckQsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3RCxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsWUFBWSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RixTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixNQUFLO0FBQ0wsSUFBSSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLEVBQUM7QUF5RUQ7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ08sU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckgsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3SixJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RFLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDdEQsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDMUcsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN6RixvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FB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\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PreparedStatus = void 0;\nvar PreparedStatus;\n(function (PreparedStatus) {\n PreparedStatus[PreparedStatus[\"OK\"] = 0] = \"OK\";\n PreparedStatus[PreparedStatus[\"INVALID_FILE\"] = -1] = \"INVALID_FILE\";\n PreparedStatus[PreparedStatus[\"VERSION_NOT_SUPPORTED\"] = -2] = \"VERSION_NOT_SUPPORTED\";\n})(PreparedStatus = exports.PreparedStatus || (exports.PreparedStatus = {}));\nvar ImsParser = /** @class */ (function () {\n function ImsParser(_a) {\n var url = _a.url, onPrepared = _a.onPrepared, onDownloadError = _a.onDownloadError;\n this.tsUnit = 1000;\n this.imageWidth = 0;\n this.imageHeight = 0;\n this.minTs = 0;\n this.maxTs = 0;\n this.dataSize = 0;\n this.numOfRecords = 0;\n this.parsedImages = new Map();\n this.recordType = 0;\n this.url = url;\n if (!this.url) {\n throw new Error('Invalid or missing parameter: URL');\n }\n if (!(onPrepared instanceof Function)) {\n throw new Error('Invalid or missing parameter: onPrepared');\n }\n // results:\n // 0:OK\n // -1:Invalid IMS file\n // -2:Version not supported\n // arguments : (status, [errorText])\n this.onPrepared = onPrepared;\n this.onDownloadError = onDownloadError;\n this.lastUsedIndex = null;\n }\n /** ** Public Methods ****/\n /**\n * Returns Size of the IMS file\n * @returns {number}\n */\n ImsParser.prototype.getFileSize = function () {\n return this.dataSize;\n };\n /**\n * Returns Height of the image as mentioned in IMS Header\n * @returns {number}\n */\n ImsParser.prototype.getImageHeight = function () {\n return this.imageHeight;\n };\n /**\n * Returns Width of the image as mentioned in IMS Header\n * @returns {number}\n */\n ImsParser.prototype.getImageWidth = function () {\n return this.imageWidth;\n };\n /**\n * Returns number of the images in the IMS file\n * @returns {number}\n */\n ImsParser.prototype.getImageCount = function () {\n return this.numOfRecords;\n };\n /**\n * Returns file format of the images in the IMS file\n * @returns {string}\n */\n ImsParser.prototype.getImageType = function () {\n return ['jpg', 'png'][this.recordType];\n };\n /**\n * Returns the timestamp of the image at passed index\n * @param {number} imgIndex - 0 based index of the image\n * @returns {number}\n */\n ImsParser.prototype.getImageTimestamp = function (imgIndex) {\n if (!this.uint32view ||\n this.indexBase32 === undefined ||\n imgIndex < 0 ||\n imgIndex > this.numOfRecords - 1) {\n return Number.NaN;\n }\n return this.uint32view[this.indexBase32 + imgIndex * 2] * this.tsUnit;\n };\n /**\n * Returns the dataurl of the image at passed index\n * @param {number} imgIndex - 0 based index of the image\n * @returns {string}\n */\n ImsParser.prototype.getImage = function (imgIndex) {\n var _a;\n if (!this.uint8view || imgIndex < 0 || imgIndex > this.numOfRecords - 1) {\n return '';\n }\n if (!this.parsedImages.get(imgIndex)) {\n var imgOffset = this.getImageOffset(imgIndex);\n var imgEnd = this.getImageOffset(imgIndex + 1);\n if (imgOffset === null || imgEnd === null) {\n return '';\n }\n var binary = btoa(String.fromCharCode.apply(null, Array.from(this.uint8view.subarray(imgOffset, imgEnd))));\n if (!binary.length) {\n return '';\n }\n this.parsedImages.set(imgIndex, \"data:image/jpeg;base64,\" + binary);\n }\n return (_a = this.parsedImages.get(imgIndex)) !== null && _a !== void 0 ? _a : '';\n };\n /**\n * Returns the 0 based index of the image closest to (at/before/after(depending upon the forward param)) the passed timestamp.\n * For eg for timestamp values [0, 10010, 20020], getClosestTimestampIndex(10010) === 1; getClosestTimestampIndex(10009) === 0; getClosestTimeStamp(10009, true) === 1;\n * @param {number} currentTimestamp - timestamp in ms.\n * @param {boolean} forward - search direction. Default = false\n * @returns {number|null}\n */\n ImsParser.prototype.getClosestTimestampIndex = function (currentTimestamp, forward) {\n if (forward === void 0) { forward = false; }\n var ts = Math.floor(currentTimestamp / this.tsUnit);\n if (currentTimestamp < this.minTs) {\n ts = this.minTs;\n }\n if (currentTimestamp > this.maxTs) {\n ts = this.maxTs;\n }\n if (!(typeof this.lastUsedIndex === 'number' &&\n ts > this.getImageTimestampWithoutUnit(this.lastUsedIndex) &&\n ts < this.getImageTimestampWithoutUnit(this.lastUsedIndex + 1))) {\n var startIdx = 0, stopIdx = this.numOfRecords - 1, middleIdx = Math.floor((startIdx + stopIdx) / 2);\n var testValue = this.getImageTimestampWithoutUnit(middleIdx);\n while (!(testValue <= ts &&\n ts < this.getImageTimestampWithoutUnit(middleIdx + 1)) &&\n startIdx < stopIdx) {\n if (ts < testValue) {\n stopIdx = middleIdx - 1;\n }\n else if (ts > testValue) {\n startIdx = middleIdx + 1;\n }\n // recalculate middleIdx\n middleIdx = Math.floor((startIdx + stopIdx) / 2);\n testValue = this.getImageTimestampWithoutUnit(middleIdx);\n }\n this.lastUsedIndex = middleIdx;\n }\n if (forward && typeof this.lastUsedIndex === 'number') {\n var returnValue = this.lastUsedIndex + 1;\n if (returnValue >= this.numOfRecords) {\n return null;\n }\n return returnValue;\n }\n return this.lastUsedIndex;\n };\n /**\n * Initialise the download of the file and parse header on download.\n */\n ImsParser.prototype.init = function () {\n var _this = this;\n fetch(this.url)\n .then(function (response) {\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(\"Failed to load IMS file: status=\" + response.status);\n })\n .then(function (rawArrayBuffer) {\n return _this.parseIMSHeader(rawArrayBuffer);\n })\n .catch(function (e) {\n _this.onDownloadError(e);\n });\n };\n /** ** Public Methods End ****/\n ImsParser.prototype.parseIMSHeader = function (rawArrayBuffer) {\n if (!rawArrayBuffer) {\n this.onPrepared(PreparedStatus.INVALID_FILE, 'check magic');\n return;\n }\n var len = rawArrayBuffer.byteLength;\n if (len < 272 || len % 4 !== 0) {\n return this.onPrepared(PreparedStatus.INVALID_FILE, 'xhr response length');\n }\n // Reference : https://wiki.unext-info.jp/display/PT/IMS+File+Specifiction\n this.uint8view = new Uint8Array(rawArrayBuffer);\n this.uint32view = new Uint32Array(rawArrayBuffer);\n var u32v = this.uint32view;\n // check magic\n if (u32v[0] !== 0x534d4975 || u32v[1] !== 0x0a0defa4) {\n this.onPrepared(PreparedStatus.INVALID_FILE, 'check magic');\n return;\n }\n // check version\n if (u32v[2] > 1) {\n this.onPrepared(PreparedStatus.VERSION_NOT_SUPPORTED, 'check magic');\n return;\n }\n // check file length\n if (u32v[3] !== len) {\n this.onPrepared(PreparedStatus.INVALID_FILE, 'file length');\n return;\n }\n this.dataSize = len;\n // get index base offset\n if (u32v[4] < len) {\n this.indexBase32 = u32v[4] / 4;\n }\n else {\n this.onPrepared(PreparedStatus.INVALID_FILE, 'index base offset');\n return;\n }\n // get number of records\n this.numOfRecords = u32v[5];\n // get timestamp unit\n var tsUnit = u32v[6];\n if (tsUnit > 0) {\n this.tsUnit = tsUnit;\n }\n // get record type\n if (u32v[7] === 0) {\n // we only support JPG here\n this.recordType = u32v[7];\n }\n else {\n this.onPrepared(PreparedStatus.VERSION_NOT_SUPPORTED, 'record type other than jpeg');\n return;\n }\n // get JPG width and height\n this.imageWidth = u32v[8];\n this.imageHeight = u32v[9];\n // TODO: parse other field, handle encryption, the IMS files are assumed unencrypted for now\n // check magic2\n if (u32v[36] !== 0x534d4975 ||\n u32v[37] !== 0x0a0defa4 ||\n u32v[38] !== 0x6733f787 ||\n u32v[39] !== 0x075fb613) {\n this.onPrepared(PreparedStatus.INVALID_FILE, 'check magic2');\n return;\n }\n // calculate dataOffset\n var dataOffset = this.indexBase32 * 4 + (this.numOfRecords + 1) * 8;\n if (dataOffset >= len) {\n this.onPrepared(PreparedStatus.INVALID_FILE, 'invalid dataOffset');\n return;\n }\n // get smallest and largest timestamp\n this.minTs = this.getImageTimestampWithoutUnit(0);\n this.maxTs = this.getImageTimestampWithoutUnit(this.numOfRecords - 1);\n this.onPrepared(PreparedStatus.OK, '');\n };\n ImsParser.prototype.getImageTimestampWithoutUnit = function (imgIndex) {\n if (!this.uint32view ||\n this.indexBase32 === undefined ||\n imgIndex < 0 ||\n imgIndex > this.numOfRecords - 1) {\n return Number.NaN;\n }\n return this.uint32view[this.indexBase32 + imgIndex * 2];\n };\n // imgIndex is 0 based\n ImsParser.prototype.getImageOffset = function (imgIndex) {\n if (!this.uint32view || this.indexBase32 === undefined) {\n return null;\n }\n return this.uint32view[this.indexBase32 + 1 + imgIndex * 2];\n };\n return ImsParser;\n}());\nexports.default = ImsParser;\n//# sourceMappingURL=index.js.map","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { v4 } from 'uuid';\n\nfunction isBatchRequest(data) {\n return data.events !== undefined;\n}\n\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\nvar __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\nfunction __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\nfunction __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;\n return g = { next: verb(0), \"throw\": verb(1), \"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\ntypeof 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\nvar sleep = function (ms) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) { return setTimeout(resolve, ms); })];\n });\n}); };\n\n/* eslint-disable no-console */\nvar SuperFlowClient = /** @class */ (function () {\n function SuperFlowClient(options) {\n this.maxRetry = 3;\n this.retryIntervalMs = 1000;\n this.timeoutMs = 10000;\n this.debug = false;\n this.debugId = null;\n this.sendQueue = [];\n this.state = 'IDLE';\n this.eventKey = {\n deviceId: '',\n servicePlatform: '',\n userMultiAccountId: '',\n client: '',\n };\n if (!options.host) {\n throw new Error('host is required');\n }\n this.host = options.host;\n this.debug = options.debug || false;\n if (typeof options.maxRetry === 'number') {\n this.maxRetry = Math.max(options.maxRetry, 0);\n }\n if (typeof options.retryIntervalMs === 'number') {\n this.retryIntervalMs = Math.max(options.retryIntervalMs, 0);\n }\n if (typeof options.timeoutMs === 'number') {\n this.timeoutMs = Math.max(options.timeoutMs, 0);\n }\n if (this.debug) {\n console.info('SuperFlowClient initialized with options:', options);\n }\n if (options.debugId) {\n this.debugId = options.debugId;\n }\n }\n SuperFlowClient.prototype.setEventKey = function (eventKey) {\n if (this.debug) {\n console.info('Set event key', eventKey);\n }\n this.eventKey = __assign(__assign({}, this.eventKey), eventKey);\n };\n SuperFlowClient.prototype.start = function () {\n if (this.isStarted) {\n if (this.debug) {\n console.warn('SuperFlowClient is already started');\n }\n return;\n }\n this.state = 'STARTED';\n if (this.debug) {\n console.info('SuperFlowClient started!');\n }\n this.flushQueue();\n };\n Object.defineProperty(SuperFlowClient.prototype, \"isStarted\", {\n get: function () {\n return this.state === 'STARTED';\n },\n enumerable: false,\n configurable: true\n });\n SuperFlowClient.prototype.sendEvent = function (event, options) {\n if (options === void 0) { options = { sendBeacon: false }; }\n return __awaiter(this, void 0, void 0, function () {\n var processedEvent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n processedEvent = this.completeEvent(event);\n if (!this.isStarted) {\n this.sendQueue.push(processedEvent);\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.processSingleEvent(processedEvent, options)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SuperFlowClient.prototype.sendBatchEvents = function (events, options) {\n if (options === void 0) { options = { sendBeacon: false }; }\n return __awaiter(this, void 0, void 0, function () {\n var processedEvents;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n processedEvents = events.map(this.completeEvent);\n if (!this.isStarted) {\n (_a = this.sendQueue).push.apply(_a, processedEvents);\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.processBatchEvents(processedEvents, options)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(SuperFlowClient.prototype, \"requestKey\", {\n get: function () {\n return {\n device_id: this.eventKey.deviceId,\n service_platform: this.eventKey.servicePlatform,\n user_multi_account_id: this.eventKey.userMultiAccountId,\n client: this.eventKey.client,\n };\n },\n enumerable: false,\n configurable: true\n });\n SuperFlowClient.prototype.completeEvent = function (rawEvent) {\n var _a, _b, _c;\n return {\n dataset: rawEvent.dataset,\n table: rawEvent.table,\n version: (_a = rawEvent.version) !== null && _a !== void 0 ? _a : '',\n timestamp: (_b = rawEvent.timestamp) !== null && _b !== void 0 ? _b : Date.now(),\n eventId: (_c = rawEvent.eventId) !== null && _c !== void 0 ? _c : v4(),\n eventData: rawEvent.eventData,\n };\n };\n SuperFlowClient.prototype.flushQueue = function () {\n if (!this.sendQueue.length)\n return;\n var events = this.sendQueue.splice(0, this.sendQueue.length);\n this.processBatchEvents(events);\n };\n SuperFlowClient.prototype.processSingleEvent = function (event, options) {\n if (options === void 0) { options = { sendBeacon: false }; }\n return __awaiter(this, void 0, void 0, function () {\n var url, request;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = \"\".concat(this.host, \"/api/v1/\").concat(event.dataset, \"/\").concat(event.table);\n if (this.debug && this.debugId) {\n url += \"?debug_id=\".concat(this.debugId);\n }\n request = {\n key: this.requestKey,\n version: event.version,\n timestamp: event.timestamp,\n event_id: event.eventId,\n event: event.eventData,\n };\n if (!options.sendBeacon) return [3 /*break*/, 2];\n return [4 /*yield*/, this.sendRequestByBeacon(url, request)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.sendRequestByFetch(url, request)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SuperFlowClient.prototype.processBatchEvents = function (events, options) {\n if (options === void 0) { options = { sendBeacon: false }; }\n return __awaiter(this, void 0, void 0, function () {\n var url, request;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = \"\".concat(this.host, \"/api/v2\");\n if (this.debug && this.debugId) {\n url += \"?debug_id=\".concat(this.debugId);\n }\n request = {\n key: this.requestKey,\n batch_timestamp: 0,\n events: events.map(function (event) { return (__assign({ dataset: event.dataset, table: event.table, version: event.version, timestamp: event.timestamp, event_id: event.eventId }, event.eventData)); }),\n };\n if (!options.sendBeacon) return [3 /*break*/, 2];\n return [4 /*yield*/, this.sendRequestByBeacon(url, request)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.sendRequestByFetch(url, request)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SuperFlowClient.prototype.sendRequestByFetch = function (url, data, retryCount) {\n if (retryCount === void 0) { retryCount = 0; }\n return __awaiter(this, void 0, void 0, function () {\n var abortController, shouldRetry, response, e_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (isBatchRequest(data)) {\n data.batch_timestamp = Date.now();\n }\n if (this.debug) {\n console.info('Sending request using fetch for %i time: %o %o', retryCount + 1, url, data);\n }\n abortController = new AbortController();\n shouldRetry = false;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.race([\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n credentials: 'include',\n signal: abortController.signal,\n }),\n new Promise(function (_, reject) {\n return setTimeout(function () {\n abortController.abort('Timeout');\n reject(new Error('Timeout'));\n }, _this.timeoutMs);\n }),\n ])];\n case 2:\n response = (_a.sent());\n if (!response.ok) {\n if (this.debug) {\n console.error('Request failed:', url, data, response.status);\n }\n shouldRetry = [500].includes(response.status);\n }\n else {\n if (this.debug) {\n console.info('Request success:', url, data);\n }\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n if (this.debug) {\n console.error('Request error:', url, data, e_1);\n }\n shouldRetry = true;\n return [3 /*break*/, 4];\n case 4:\n if (!shouldRetry) return [3 /*break*/, 9];\n if (!(retryCount < this.maxRetry)) return [3 /*break*/, 8];\n if (!(this.retryIntervalMs > 0)) return [3 /*break*/, 6];\n return [4 /*yield*/, sleep(this.retryIntervalMs)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6: return [4 /*yield*/, this.sendRequestByFetch(url, data, retryCount + 1)];\n case 7: return [2 /*return*/, _a.sent()];\n case 8:\n if (this.debug) {\n console.warn('Request failed after max retry:', url, data);\n }\n _a.label = 9;\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n SuperFlowClient.prototype.sendRequestByBeacon = function (url, data) {\n return __awaiter(this, void 0, void 0, function () {\n var blob;\n return __generator(this, function (_a) {\n if (isBatchRequest(data)) {\n data.batch_timestamp = Date.now();\n }\n if (this.debug) {\n console.info('Sending request using sendBeacon:', url, data);\n }\n blob = new Blob([JSON.stringify(data)], {\n type: 'application/json',\n });\n navigator.sendBeacon(url, blob);\n return [2 /*return*/];\n });\n });\n };\n return SuperFlowClient;\n}());\n\nexport { SuperFlowClient, isBatchRequest };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXNtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdHNsaWJAMi42LjMvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5tanMiLCIuLi9zcmMvdXRpbHMudHMiLCIuLi9zcmMvY29yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xuXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcbiAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gIH1cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgIHRbcF0gPSBzW3BdO1xuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgIH1cbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xuICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cbiAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcbiAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XG4gIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xuICB2YXIgXywgZG9uZSA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xuICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XG4gICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcbiAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XG4gICAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xuICBkb25lID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XG4gIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xuICB9XG4gIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcbiAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xuICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiwgYXdhaXRSZXR1cm4pLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcbiAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgd2hpbGUgKGVudi5zdGFjay5sZW5ndGgpIHtcbiAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xuICAgICAgICBpZiAocmVjLmFzeW5jKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICBmYWlsKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxufTtcbiIsbnVsbCxudWxsXSwibmFtZXMiOlsidXVpZHY0Il0sIm1hcHBpbmdzIjoiOztBQTZCTSxTQUFVLGNBQWMsQ0FDNUIsSUFBa0MsRUFBQTtBQUVsQyxJQUFBLE9BQVEsSUFBcUIsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDO0FBQ3JEOztBQ2pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaUJBO0FBQ08sSUFBSSxRQUFRLEdBQUcsV0FBVztBQUNqQyxFQUFFLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNuRCxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNELFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixVQUFVLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLE9BQU87QUFDUCxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQ2YsSUFBRztBQUNILEVBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN6QyxFQUFDO0FBeUVEO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELEVBQUUsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQzlHLEVBQUUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQzdELE1BQU0sU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNqRyxNQUFNLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNwRyxNQUFNLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUNwSCxNQUFNLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM1RSxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25ILEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0osRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNwRSxFQUFFLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUNwQixNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUNwRSxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ3BELFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkssVUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFVBQVUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTTtBQUM1QyxjQUFjLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN0RSxjQUFjLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFDL0QsY0FBYyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0FBQy9ELGNBQWM7QUFDZCxrQkFBa0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUM5SCxrQkFBa0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN4RyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0FB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\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n"],"names":["colors","raf","range","observer","value","createStringInterpolator","output","useRef","useEffect","useState"],"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,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]}